मैं मानचित्र के लिए Leaflet.js का उपयोग कर रहा हूं। अब मैं मानचित्र से अतिरिक्त परतों को हटाना चाहता हूं। इनपुट # बटन पर क्लिक करके सभी चेक किए गए चेकबॉक्स को अनचेक में बदला जाएगा और सभी संबंधित परतों को मानचित्र से हटा दिया जाएगा।Leaflet.js: मानचित्र से कई परतों को कैसे हटाएं
मानचित्र से परत को निकालने के लिए परत की आईडी की आवश्यकता है। यह आईडी संबंधित चेकबॉक्स की आईडी के बराबर है। यही कारण है कि मैं सभी चेक किए गए चेकबॉक्स के आईडी प्राप्त करने के लिए jQuery का उपयोग करता हूं और ऑब्जेक्ट में अपना मान संग्रहीत करता हूं, यहां कुछ ओबीजे.आईडीएस कहा जाता है।
जब मैं एक परत यह जबकि console.log प्रदर्शित करता है वांछित मूल्य काम नहीं करता है दूर करने के लिए संग्रहीत मूल्य वैल उपयोग करने के लिए प्रयास करें। उदाहरण के लिए: mapcat52।
पिछली आईडी को मैप.removeLayer (mapcat52) जैसे कार्य में हार्ड कोड डालने के दौरान यह अपेक्षा के अनुसार काम करता है।
मेरे कोड या मेरे विचार में त्रुटि कहां है?
किसी भी मदद की बहुत सराहना की है।
एचटीएमएल
<input type="button" id="selectnone" value="deselect all" />
<!-- checkboxes -->
<input id="mapcat52" type="checkbox" name="maplayer" class="maplayer">
<label for="mapcat52">Map Layer One</label>
<input id="mapcat53" type="checkbox" name="maplayer" class="maplayer">
<label for="mapcat53">Map Layer Two</label>
...
जे एस:
$('#selectnone').click(function() {
var someObj = {};
someObj.idsChecked = [];
$("input:checkbox").each(function() {
if ($(this).is(":checked")) {
someObj.idsChecked.push($(this).attr("id"));
}
}).attr('checked', false);
$.each(someObj.idsChecked,function(id, val) {
// displays the wanted value, e.g. "mapcat52" if checkbox with this id is checked
console.log(val);
// does not work: inserted value
map.removeLayer(val);
// works: hard coded value of the leaflet.js/input id
map.removeLayer(mapcat52);
});
});
यह मदद कर सकता है: https://stackoverflow.com/questions/39186001/ कैसे-टू-क्लोज-ऑल-पॉपअप –