मैपबॉक्स / कैटलॉग में बेस लेयर को प्रोग्रामेटिक रूप से कैसे स्विच करें


12

मेरे पास कई आधार परतें हैं, और मुझे अपने आवेदन में विभिन्न कार्यों और राज्यों पर निर्भर करते हुए, उन्हें प्रोग्रामेटिक रूप से स्विच करने की आवश्यकता है। मुझे के जीवन के लिए, कैसे नहीं मिल सकता।

जवाबों:


16

यह ट्यूटोरियल एक अच्छे उदाहरण के रूप में कार्य करता है:

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उदाहरण में दिखाए गए लेयर्स कंट्रोल का उपयोग कर रहे हैं , तो कंट्रोल मैप पर जो कुछ भी है, उस पर नज़र रखता है और तदनुसार चेकबॉक्स को बदलता है।


कहां है mapboxUrlऔर mapboxAttribution?
बजे मोहम्मद दयान

@ मोहम्मददयान आपको ऊपर दिए गए ट्यूटोरियल से ताल्लुक रखने की जरूरत है
toms

0

से https://stackoverflow.com/a/33762133/4355695

आम तौर पर केवल मानचित्र में एक परत जोड़कर (जैसे myTileLayer.addTo (नक्शा)), अगर वह परत परत परतों के आधार या परत नियंत्रण की ओवरले का हिस्सा है, तो बाद वाला स्वचालित रूप से अपनी स्थिति अपडेट कर देगा (यदि आपने एक आधार परत को जोड़ा है,) रेडियो बटनों को उसके अनुसार चुना जाएगा; एक ओवरले के लिए, संबंधित चेकबॉक्स को टिक किया जाएगा)।

मैंने कोशिश की और यह काम किया: मुझे वर्तमान बेसलेयर (या उस मामले के लिए किसी के सक्रिय होने का पता लगाने) के साथ परेशान करने की आवश्यकता नहीं है। बस myTileLayer.addTo(map)काम करता है: यदि यह पहले से ही मेरे बेसलियर्स का हिस्सा है, तो मैप इसे "स्विच" करता है। यह स्वचालित रूप से वर्तमान परत को हटा देता है और बदल जाता है myTileLayer

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.