2010-07-20 16 views
5

कुछ सरल समस्या निकालें (समझाने के लिए) इस समय:मार्कर श्रोताओं

for (i in markersArray) { 
google.maps.event.addListener(markersArray[i], 'click', function() {   
    //stuff it does 
    google.maps.event.removeListener(?????)  //remove self... but HOW?! 
});} 

के रूप में मैं टिप्पणी में उल्लेख है, मैं बस चाहता हूँ:

मैं मार्कर है कि मैं thusly eventlisteners साथ लैस की एक सरणी है श्रोताओं को क्लिक करने के बाद हटा दिया जाना चाहिए।

समस्या यह है कि मुझे नहीं पता कि श्रोता के लिए हैंडल क्या है।

+0

मैं नोटिस नहीं किया था आप 'google-maps' टैग निकाल दिया गया, बस से पहले मैं इसे फिर से टैग किया। मैं इसे रखूंगा, क्योंकि इस तरह सभी Google मानचित्र API प्रश्न सामान्य रूप से टैग किए जाते हैं। –

उत्तर

4

आप "addListenerOnce" का उपयोग कर सकते कर सकते हैं। फिर आपको श्रोता को हटाने से परेशान भी नहीं होना चाहिए।

addListenerOnce (उदाहरण: ऑब्जेक्ट, घटनानाम: स्ट्रिंग, हैंडलर: समारोह)

तरह event.AddListener, लेकिन हैंडलर पहली घटना से निपटने के बाद ही निकाल देता है।

+0

अच्छा लगा, बस मुझे क्या चाहिए :) – Stjerneklar

+0

शानदार! धन्यवाद! –

0

मुझे इस मामले में काफी यकीन है कि आप श्रोताओं की एक सरणी (या एक वस्तु जो मार्कर और श्रोताओं को घेरती है) का उपयोग करेगी। google.maps.event एक ईवेंट ऑब्जेक्ट देता है। Check the documentation

var markersListeners = []; 

for (i in markersArray) 
{ 
    markersListeners[i] = google.maps.event.addListener(markersArray[i], 'click', function() 
    { 
     //stuff it does 
     google.maps.event.removeListener(markersListeners[i]); 
    }); 
} 

अस्वीकरण: मैं वाक्य रचना की जाँच नहीं की है। आप इसे हटाए गए लिस्टनर (मार्करअरे [i]) को भी आजमा सकते हैं जैसा कि मैंने इसे देखा है, लेकिन यह नहीं जानता कि यह काम करता है या नहीं।

+0

हटाएं लिस्टनर (मार्करअरे [i]) मेरे लिए काम नहीं किया जब मैंने कल कोशिश की, मुझे एपीआई त्रुटियां – Stjerneklar

संबंधित मुद्दे