15

मैं Google मानचित्र पर एक मार्कर साफ़ करना चाहता हूं।Google मानचित्र v3 में "marker.setVisible (false)" और "marker.setMap (null)" के बीच क्या अंतर है?

marker.setVisible(false) और marker.setMap(null) के बीच क्या अंतर है?

लेकिन मुझे नहीं पता, जो सही है?

उत्तर

22

दो विधियों के बीच अंतर स्पष्ट रूप से प्रलेखित नहीं प्रतीत होता है।

  • आप setMap(null) उपयोग करते हैं, अपने मार्कर Map के संदर्भ खो देंगे: हालांकि, निम्नलिखित ध्यान दें। यदि आप Map ऑब्जेक्ट का संदर्भ नहीं रखते हैं, तो आप मार्कर को फिर से रीसेट करने में सक्षम नहीं होंगे।

  • इसके अलावा, setMap() विधि visible_changed घटना शुरू नहीं करता, जबकि setVisible() विधि करता है (यदि दृश्यता वास्तव में चालू किए जाने पर)।

उदाहरण:

var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 4, 
    center: new google.maps.LatLng(-25.363, 131.044), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(-25.363, 131.044), 
    map: map 
}); 

google.maps.event.addListener(marker, 'visible_changed', function() { 
    console.log('visible_changed triggered'); 
}); 

marker.setVisible(false); // visible_changed triggered 
marker.setVisible(true); // visible_changed triggered 
marker.setMap(null);  // visible_changed not triggered 
marker.setMap(map);  // visible_changed not triggered 

मुझे लगता है कि हम का उपयोग करना चाहिए setVisible(false) विधि जब हम मानचित्र पर फिर मार्कर reshow को setMap(null) का इरादा है, और जब हम इसे फिर से दिखा नहीं किया जाएगा।

10

एक अन्य महत्वपूर्ण भेद यह है कि setMap(NULL) मार्कर से जुड़े संसाधनों को जारी करता है जबकि setVisible(false) मार्कर को अदृश्य बनाता है, लेकिन मार्कर से जुड़े संसाधन अभी भी आवंटित किए जाते हैं।

यदि आप 100 के दशक या मार्कर के 1000s से निपट रहे हैं, तो यह एक महत्वपूर्ण प्रदर्शन और स्मृति समस्या बन सकता है।

+3

संक्षेप में, 'सेटमैप (शून्य) 'मार्करों के 1000s के लिए बेहतर प्रदर्शन प्रदान करेगा – Federico

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