कैटलॉग: आप रिमूवर का उपयोग कैसे करते हैं?


15

यह मुझे पागल बना रहा है। अपने नक्शे में एक परत नियंत्रण जोड़ने के लिए USC ट्यूटोरियल देखें:

L.Icon.Default.imagePath = "Scripts/images";

var mapUrl = 'http://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png';
var secondMap = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png';

var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
denver = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
aurora = L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
golden = L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.');

var cities = L.layerGroup([littleton, denver, aurora, golden]);

var grayscale = L.tileLayer(mapUrl, { id: mapUrl }),
streets = L.tileLayer(secondMap, { id: secondMap });

var map = L.map('map', {
    center: [39.73, -104.99],
    zoom: 10,
    layers: [grayscale, cities]
});

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

var overlayMaps = {
    "Cities": cities
};

L.control.layers(baseMaps, overlayMaps).addTo(map);

अब, मैं map.on ('क्लिक') ईवेंट का उपयोग करके "ग्रेस्केल" मानचित्र को नियंत्रण से हटाने के लिए रिमलीयर फ़ंक्शन का उपयोग कैसे करूं? कोड होगा:

map.on('click', function(){
    //remove GrayScale
});

क्या आप चाहते हैं कि उपयोगकर्ता एक बटन के साथ ग्रेस्केल को हटा सके? या इसके लिए किसी अन्य घटना के प्रभाव के रूप में गतिशील रूप से हटाया जाना चाहिए? या क्या आप बस चाहते हैं कि नक्शा ग्रेस्केल परत के बिना शुरू हो?
हेक्सामन

मान लें कि सबसे आसान समाधान: गतिशील रूप से किसी घटना के प्रभाव के रूप में। उदाहरण के लिए, map.on ('क्लिक', फ़ंक्शन () {})। मैं उसी के अनुसार अपनी पोस्ट संपादित करूंगा।
यमन

जवाबों:


21

यदि आप शुरू से हटाए गए ग्रेस्केल मानचित्र को हटाना चाहते हैं:

    "Grayscale": grayscale,

से

var baseMaps = {
    "Grayscale": grayscale,
    "Streets": streets
};

यदि आप एक क्लिक पर परत को हटाना चाहते हैं तो आप इसे मैप ऑब्जेक्ट पर एक विधि के रूप में कहते हैं। इस तरह:

map.removeLayer(grayscale)

इसे नियंत्रण से हटाने के लिए आपको पहले नियंत्रण को एक चर पर नियत करना होगा। इसे बदलो:

L.control.layers(baseMaps, overlayMaps).addTo(map);

इसके लिए:

lcontrol = L.control.layers(baseMaps, overlayMaps).addTo(map);

तब आप कॉल कर सकते हैं:

lcontrol.removeLayer(grayscale) 

..तो इसे नियंत्रण से हटा दें।

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