Respostas:
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.
De /programming//a/33762133/4355695
Normalmente, basta adicionar uma camada ao mapa (por exemplo, myTileLayer.addTo (map)), se essa camada fizer parte das camadas base ou sobreposições do controle Layers, a última atualizará automaticamente seu status (se você adicionou uma camada base, os botões de opção serão selecionados de acordo; para uma sobreposição, a caixa de seleção correspondente será marcada).
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 para myTileLayer
.
mapboxUrl
&mapboxAttribution
?