Hoje vamos adicionar alguns mapas base e alguns controles ao nosso mapa. Até agora temos usado o OpenStreetMap como o nosso basemap. Iremos adicionar 2 novas camadas base e também adicionaremos uma atribuição ao mapa para que possamos dar crédito, além de uma barra de escala.
1. Adicionando Basemaps
Os mapas base e seus URLs que queremos adicionar são:
Mapa Nacional Topo: https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/WMTS/tile/1.0.0/USGSTopo/default/default028mm/{z}/{y}/{x}.png
Open Topo Map: https://tile.opentopomap.org/{z}/{x}/{y}.png
Primeiro criamos as duas camadas de base:
var basetopo = L.tileLayer('https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/WMTS/tile/1.0.0/USGSTopo/default/default028mm/{z}/{y}/{x}.png', {}); var baserelief = L.tileLayer('https://tile.opentopomap.org/{z}/{x}/{y}.png', {});
Poderíamos adicioná-los ao mapa como estão, mas queremos controlar a visibilidade de cada um, permitindo que o usuário escolha qual deles é exibido. Para fazer isso, crie um objeto para manter a descrição e a camada:
var baselayers = { 'Shaded Relief': baserelief, 'National Map topo': basetopo };
2. Adicionando Controle de Camada
O controle de camada nos permite escolher o que é exibido no mapa. Para criá-lo, passamos o mapa base e as camadas de sobreposição. Isso exige que criemos um objeto para manter a(s) sobreposições e, em seguida, podemos criar o controle:
var overlays = { 'The Trail': thetrail }; L.control.layers(baselayers, overlays).addTo(map);
Adicionamos apenas um dos mapas base ao mapa antes de criar o controle. O mapa agora tem um controle de camada com um mapa base ativo e outro disponível no controle:
Nós vamos adicionar sobreposições adicionais em posts futuros.
3. O Scalebar
Adicionar uma barra de escala é fácil:
var scale = L.control.scale() scale.addTo(map)
4. Adicionando Atribuição
Para dar crédito às fontes de dados, adicione a atribuição:
map.attributionControl.addAttribution('National Map Topo'); map.attributionControl.addAttribution('OpenTopoMap');
Isso acrescenta atribuição a qualquer existente, que no início é apenas “Leaflet”.
Isso completa nosso mapa para hoje. Podemos alternar entre camadas base usando o controle e ter a atribuição adequada e uma barra de escala.
5. Código Javascript
var map = L.map(document.getElementById('mapDIV'), { center: [62.7, -144.0], zoom: 6 }); // Base maps var basetopo = L.tileLayer('https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/WMTS/tile/1.0.0/USGSTopo/default/default028mm/{z}/{y}/{x}.png', {}); var baserelief = L.tileLayer('https://tile.opentopomap.org/{z}/{x}/{y}.png', {}); basetopo.addTo(map); // The trail var thetrail = L.geoJSON(trail, { color: '#800000', weight: 3, dashArray: '12 8 12', }); thetrail.bindTooltip('The Valdez-Eagle Trail') thetrail.addTo(map); var baselayers = { 'Shaded Relief': baserelief, 'National Map topo': basetopo }; var overlays = { 'The Trail': thetrail }; L.control.layers(baselayers, overlays).addTo(map); // Add scalebar var scale = L.control.scale() scale.addTo(map) // Add attribution map.attributionControl.addAttribution('National Map Topo'); map.attributionControl.addAttribution('OpenTopoMap');
6. YouTube
Se você quiser, pode ver o processo detalhado acima no YouTube: