J'ai plusieurs couches de base et j'ai besoin de les changer par programme, en fonction de diverses actions et états dans mon application. Je ne trouve pas comment, pour ma vie.
12
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.
mapboxUrl
&mapboxAttribution
?Depuis /programming//a/33762133/4355695
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 devientmyTileLayer
.la source