Google मानचित्र API v3: ईवेंट श्रोता को कैसे निकालें?


91

मैं Google Maps API v3 में 'bounds_changed' ईवेंट श्रोता को कैसे निकालूँ ?

google.maps.event.removeListener(_???_);    

1
मुझे लगता है कि मैंने वह पाया जो आप ढूंढ रहे थे। यह एपीआई डॉक्स में तीसरा इवेंट फंक्शन था।
मीकू मोरी

1
मै तुम्हारा दर्द समझ सकता हू। आपको लगता है कि यह दस्तावेज़ कोड . google.com/apis/maps/documentation/javascript/events.html पर होगा लेकिन यह नहीं है। Grrrr
ड्रयू लेसुइयूर

जवाबों:


152

आमतौर पर आप Google मैप्स एपीआई प्रलेखन में ऐसे सवालों के जवाब पा सकते हैं।

जैसा कि एंड्रयू ने कहा, addListener एक हैंडल देता है जिसे आप बाद में श्रोता को हटाने के लिए उपयोग कर सकते हैं। ऐसा इसलिए है क्योंकि एक एकल घटना में कई श्रोता हो सकते हैं और उन्हें हटाने के लिए आपको प्रत्येक संलग्न श्रोता के संदर्भ को सहेजना होगा।

एक समारोह भी है जो सभी श्रोताओं को एक ही समय में हटा देता है:

clearListeners(instance:Object, eventName:string);
//In your case:
google.maps.event.clearListeners(map, 'bounds_changed');

यहां Google मानचित्र API संदर्भ है जहां आप इसके बारे में पढ़ सकते हैं।


2
तो क्या यह केवल bounds_changed घटना को हटा देगा?
mp_

एंड्रयूज विधि बनाम इस विधि का उपयोग करने के लिए क्या है?
mp_

यह सभी श्रोताओं को सीमा से परिवर्तित घटना को हटा देता है। जबकि एंड्रयू का तरीका एक को हटा देता है। अगर आप हैंडल को कहीं स्टोर नहीं करना चाहते हैं और आपको केवल दिए गए ईवेंट के लिए 1 श्रोता की चिंता करनी है तो यह रास्ता तय करना है।
मायकु मोरी

जैसा कि मैंने कहा कि घटनाओं में कई श्रोता हो सकते हैं, लेकिन ऐसा लगता है कि आप अपने कोड में केवल 1 का उपयोग कर रहे हैं। यदि आप उस अवधारणा को समझेंगे, तो आप दोनों कार्यों के लिए अलग-अलग उपयोग देखेंगे। मेरे द्वारा दिए गए लिंक को भी देखें, इसमें उन दोनों कार्यों के लिए अच्छी व्याख्याएँ हैं।
मीकू मोरी

2
पता लगा लिया। google.maps.event.clearListeners(map, 'idle')काम करता है। लेकिन map.clearListeners('idle')नहीं है। वह सिंटैक्स API ( .addListener, आदि) में बाकी सब के लिए काम करता है । अजीब।
एंडी मर्सर

93

addListener एक हैंडल देता है जिसे आप बाद में हटा सकते हैं।

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {

google.maps.event.removeListener(listenerHandle);

तो श्रोताओं के लिए अब स्थिर चर नहीं है?
mp_

एक-एक करके श्रोताओं को हटाने की जरूरत है। आप उन सभी को अला jQuery से नहीं हटा सकते। मुझे पता है क्योंकि मैंने ऐसा ही सोचा था और इस बिंदु पर भी भ्रमित हो गया। मैंने अंततः इसे काम किया और ऊपर दिया गया छद्म कोड मोटे तौर पर दिखाता है कि मैंने यह कैसे किया।
एंड्रयू

1
Drat! तुम्हारा है एक बेहतर जवाब।
एंड्रयू

4
मेरे लिए बेहतर उत्तर, यह केवल उस घटना श्रोता को हटा रहा है जिसे हमने बनाया था और यह अन्य लिपियों को प्रभावित नहीं करता है
Matthieu Napoli

2
दो कारणों से बेहतर उत्तर। केवल, वास्तविक श्रोता को हटा देता है। इसके अलावा,
स्नार्की

16

वर्तमान रिलीज में यह काम करने लगता है।

var listenerHandle = google.maps.event.addListener(map, 'bounds_changed', function() {
    // Handler code.
});
listenerHandle.remove();

और इस दृष्टिकोण के बारे में अच्छी बात यह है कि listenerHandler.remove()डेटा-लेयर श्रोताओं के लिए भी काम करता है - यानी google.maps.data.addListener- क्योंकि कोई google.maps.data.removeListenerविधि परिभाषित नहीं है।
क्रिस्टोफर किंग


0

यदि आप श्रोता वस्तु को किसी तरह पकड़ सकते हैं तो आप श्रोता को सीधे तौर पर हटा सकते हैं google.maps.event.clearListeners(objectListened, 'event');

उदाहरण के लिए: google.maps.event.clearListeners(map, 'bounds_changed');

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