Eu tenho várias camadas de base e preciso alterá-las programaticamente, dependendo de várias ações e estados no meu aplicativo. Não consigo encontrar como, para a minha vida.
12
Este tutorial serve como um bom exemplo:
1) Como mostrado no exemplo, configure suas camadas base com um nome de variável que possa ser acessado na função em que você deseja alterá-las programaticamente.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) Em seguida, adicione e remova as camadas que deseja adicionar ou remover. A seguir, troque a grayscale
camada pela streets
camada. Isso pressupõe que ambos grayscale
e streets
estejam disponíveis no escopo da função em que você está fazendo a alternância.
map.removeLayer(grayscale);
map.addLayer(streets);
3) Se você estiver usando o controle de camadas L.control.layers
mostrado no exemplo, o controle acompanhará o que está no mapa e altera as caixas de seleção de acordo.
mapboxUrl
&mapboxAttribution
?De /programming//a/33762133/4355695
Eu tentei e funcionou: não preciso me preocupar em remover a camada de base atual (ou em descobrir qual é o ativo nesse sentido). Apenas
myTileLayer.addTo(map)
faz o trabalho: se já faz parte das minhas bases, o mapa "muda" para ele. Remove automaticamente a camada atual e muda paramyTileLayer
.fonte