Réponses:
Ce tutoriel est un bon exemple:
1) Comme indiqué dans l'exemple, configurez vos couches de base avec un nom de variable accessible dans la fonction où vous souhaitez les basculer par programme.
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) Ensuite, ajoutez et supprimez les calques que vous souhaitez ajouter ou supprimer. Ce qui suit échange le grayscale
calque pour le streets
calque. Cela suppose que les deux grayscale
et streets
sont disponibles dans le cadre de la fonction où vous effectuez la commutation.
map.removeLayer(grayscale);
map.addLayer(streets);
3) Si vous utilisez le contrôle des couches L.control.layers
illustré dans l'exemple, le contrôle garde la trace de ce qui se trouve sur la carte et modifie les cases à cocher en conséquence.
Depuis /programming//a/33762133/4355695
Normalement, en ajoutant simplement une couche à la carte (par exemple, myTileLayer.addTo (map)), si cette couche fait partie des couches de base ou des superpositions du contrôle des couches, cette dernière mettra automatiquement à jour son état (si vous avez ajouté une couche de base, les boutons radio seront sélectionnés en conséquence; pour une superposition, la case correspondante sera cochée).
J'ai essayé et cela a fonctionné: je n'ai pas besoin de me soucier de supprimer la couche de base actuelle (ou de déterminer laquelle est active, d'ailleurs). myTileLayer.addTo(map)
Fait juste le travail: s'il fait déjà partie de mes couches de base, alors la carte "bascule" dessus. Il supprime automatiquement le calque actuel et devient myTileLayer
.
mapboxUrl
&mapboxAttribution
?