Controles y capas mapa
Agregar el document ready
$(document).on("pageshow", "#mapPage", function () {});
Agregar el control de capas
<link rel="stylesheet" href="css/styledLayerControl.css" />
<script src="js/styledLayerControl.js"></script>
http://kartena.github.io/Proj4Leaflet/
//Capas
const serveiOrtoCache = new L.tileLayer(
"https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg",
{},
);
const serveiTopoCache = new L.tileLayer(
"https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/topo/GRID3857/{z}/{x}/{y}.jpeg",
{},
);
const portals = new L.Proj.geoJson(portals_json, {
pointToLayer: function (geoJsonPoint, latlng) {
return L.circleMarker(latlng, {
radius: 8,
fillColor: "#ff7800",
color: "#000",
weight: 1,
opacity: 1,
fillOpacity: 0.8,
});
},
});
const baseMaps = [
{
groupName: "Mapes base",
layers: {
OpenStreetMap: osm,
Ortofoto: serveiOrtoCache,
Topogràfic: serveiTopoCache,
},
},
];
const serveis = [
{
groupName: "Portals",
layers: {
Portals: portals,
},
},
];
const options = {
container_width: "200px",
container_maxHeight: "850px",
group_maxHeight: "80px",
exclusive: false,
};
const controlLayers = new L.Control.styledLayerControl(
baseMaps,
serveis,
options,
);
mapa.addControl(controlLayers);
Agregar el control de busqueda
<link rel="stylesheet" href="css/leaflet-search.min.css" />
<link rel="stylesheet" href="css/leaflet-search.mobile.min.css" />
<script src="js/leaflet-search.min.js"></script>
const searchControl = new L.Control.Search({
layer: portals,
propertyName: "Direccion",
zoom: 18,
});
searchControl.on("search:locationfound", (item) => {
const { latlng } = item;
//streetView(latlng.lat, latlng.lng);
});
mapa.addControl(searchControl);
Agregar el font-awesome
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
/>
Agregar el control de localizacion
<link rel="stylesheet" href="css/L.Control.Locate.min.css" />
<script src="js/L.Control.Locate.min.js"></script>
//leaflet control geolocalizacion
L.control.locate({ drawCircle: false }).addTo(mapa);
Agregar el control de medida
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/gokertanrisever/leaflet-ruler@master/src/leaflet-ruler.css"
crossorigin="anonymous"
/>
<script
src="https://cdn.jsdelivr.net/gh/gokertanrisever/leaflet-ruler@master/src/leaflet-ruler.js"
crossorigin="anonymous"
></script>
//Medida
L.control
.ruler({
position: "topleft",
})
.addTo(mapa);
Agregar la vista de calle (REQUIERE API KEY DE GOOGLE)
<script
type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?key=[TU_API_KEY]"
></script>
#panorama {
position: absolute;
z-index: 1000;
left: 10px;
bottom: 100px;
height: 150px;
width: 200px;
resize: both;
background-color: transparent !important;
}
// en el search control descomentar
//streetView(latlng.lat, latlng.lng)
//leaflet Street View
function streetView(lat, lng) {
document.getElementById("panorama").style.visibility = "visible";
panorama = new google.maps.StreetViewPanorama(
document.getElementById("panorama"),
{
position: { lat: lat, lng: lng },
pov: { heading: 290, pitch: 10 },
zoom: 1,
},
);
panorama.setOptions({
addressControl: false,
panControl: false,
enableCloseButton: true,
});
}
mapa.on("contextmenu", function (evento) {
var coordenada = evento.latlng;
streetView(coordenada.lat, coordenada.lng);
});
Agregar el resto de capas geojson al mapa
<script src="data/farmacies.js"></script>
<script src="data/aparcament.js"></script>
<script src="data/BBVA.js"></script>
.....
//Farmacies
const icono_farmacia = L.icon({
iconUrl: 'iconos/farmacia.png',
iconSize: [16,16]
});
const farmacies = L.Proj.geoJson(farmacies_json,{
'pointToLayer': function (feature,latlng){
return L.marker(latlng,{icon:icono_farmacia});
}
})
//Aparcaments
const icono_aparcament = L.icon({
iconUrl: 'iconos/aparcament.png',
iconSize: [16,16]
});
const aparcament = L.Proj.geoJson(aparcament_json,{
'pointToLayer': function (feature,latlng){
return L.marker(latlng,{icon:icono_aparcament});
}
})
//BBVA
const icono_BBVA = L.icon({
iconUrl: 'iconos/BBVA.png',
iconSize: [16,16]
});
const BBVA = L.Proj.geoJson(BBVA_json,{
'pointToLayer': function (feature,latlng){
return L.marker(latlng,{icon:icono_BBVA});
}
})
.....
Modificar el control del capas
const serveis = [
{
groupName: "Entitats bancàries",
layers: {
BBVA: BBVA,
CaixaBank: caixabanc,
Santander: santander,
Sabadell: sabadell,
},
},
{
groupName: "Sanitat",
layers: {
Hospital: hospital,
CAP: CAP,
Farmacies: farmacies,
},
},
{
groupName: "Educació",
layers: {
Escoles: escoles,
Biblioteques: biblio,
},
},
{
groupName: "Oci i lleure",
layers: {
Parcs: parcs,
Poliesportius: poliesport,
Oci: oci,
Restaurants: restaurant,
},
},
{
groupName: "Consum",
layers: {
//"Supermercats" : supermercats,
Alcampo: alcampo,
BonArea: bonarea,
Condis: condis,
Caprabo: caprabo,
Consum: consum,
Dia: dia,
Mercadona: mercadona,
},
},
{
groupName: "Serveis",
layers: {
//"Serveis Públics" : serveispublics,
Ajuntament: ajuntament,
DNI: DNI,
Museu: museu,
Policia: policia,
"Serveis socials": serveissocials,
Tanatori: tanatori,
"Parades bus": paradesbus,
Aparcament: aparcament,
Gasolineres: gasolineres,
Ferrocarrils: ferrocarrils,
},
},
{
groupName: "Portals",
layers: {
Portals: portals,
},
},
];