जवाबों:
यह ट्यूटोरियल एक अच्छे उदाहरण के रूप में कार्य करता है:
1) जैसा कि उदाहरण में दिखाया गया है, अपनी बेस लेयर्स को वैरिएबल नाम के साथ सेट करें जिसे उस फंक्शन में एक्सेस किया जा सकता है जहाँ आप उन्हें प्रोग्रामेटिक रूप से स्विच करना चाहते हैं।
var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
streets = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});
2) फिर उन परतों को जोड़ें और निकालें जिन्हें आप जोड़ना या हटाना चाहते हैं। निम्नलिखित grayscaleपरत के लिए परत को स्वैप करता है streets। मतलब यह है कि दोनों grayscaleऔर streetsसमारोह जहां स्विचिंग कर रहे हैं के दायरे के भीतर उपलब्ध हैं।
map.removeLayer(grayscale);
map.addLayer(streets);
3) यदि आप L.control.layersउदाहरण में दिखाए गए लेयर्स कंट्रोल का उपयोग कर रहे हैं , तो कंट्रोल मैप पर जो कुछ भी है, उस पर नज़र रखता है और तदनुसार चेकबॉक्स को बदलता है।
से https://stackoverflow.com/a/33762133/4355695
आम तौर पर केवल मानचित्र में एक परत जोड़कर (जैसे myTileLayer.addTo (नक्शा)), अगर वह परत परत परतों के आधार या परत नियंत्रण की ओवरले का हिस्सा है, तो बाद वाला स्वचालित रूप से अपनी स्थिति अपडेट कर देगा (यदि आपने एक आधार परत को जोड़ा है,) रेडियो बटनों को उसके अनुसार चुना जाएगा; एक ओवरले के लिए, संबंधित चेकबॉक्स को टिक किया जाएगा)।
मैंने कोशिश की और यह काम किया: मुझे वर्तमान बेसलेयर (या उस मामले के लिए किसी के सक्रिय होने का पता लगाने) के साथ परेशान करने की आवश्यकता नहीं है। बस myTileLayer.addTo(map)काम करता है: यदि यह पहले से ही मेरे बेसलियर्स का हिस्सा है, तो मैप इसे "स्विच" करता है। यह स्वचालित रूप से वर्तमान परत को हटा देता है और बदल जाता है myTileLayer।
mapboxUrlऔरmapboxAttribution?