cevap

22

İki yöntem arasındaki fark açıkça belgelenmiş gibi görünmüyor.

  • Eğer setMap(null) kullanmak

    , işaretçiniz Map başvurusunu kaybedersiniz: Ancak, aşağıdaki not edin. Map nesnesine bir başvuru tutmazsanız, işaretleyiciyi yeniden gösteremezsiniz. (Görünürlük aslında duruma getirildiğinden ise) setVisible() yöntem yok iken

  • Ayrıca, setMap() yöntem visible_changed olayı tetiklemez.

Örnek: Ben tekrar göstermekten olmayacak ne zaman harita üzerinde tekrar işaretleyici reshow niyetinde ve setMap(null) biz setVisible(false) yöntemi kullanılarak yapılmalıdır tahmin

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 

.

10

setMap(NULL)setMap(NULL) işaretleyici ile ilişkili kaynakları serbest bırakıyor, setVisible(false) ise yalnızca işaretleyiciyi görünmez kılıyor, ancak işaretleyici ile ilişkilendirilen kaynaklar hala ayrılıyor.

100'ler veya 1000'lerdeki işaretleyicilerle uğraşıyorsanız, bu önemli bir performans ve bellek sorunu haline gelebilir.

+3

Özetle, 'setMap (null)', 1000'lerin işaretleri için daha iyi performans sağlar. – Federico

İlgili konular