Javascript “与”的区别是什么;marker.setVisible(false)";及;marker.setMap(空)";在谷歌地图v3?

Javascript “与”的区别是什么;marker.setVisible(false)";及;marker.setMap(空)";在谷歌地图v3?,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,我想清除谷歌地图上的一个标记 marker.setVisible(false)和marker.setMap(null)之间有什么区别 但是我不知道,哪一种是正确的?这两种方法之间的差异似乎没有明确的记录。但是,请注意以下几点: 使用setMap(null)时,标记将丢失对Map的引用。如果不保留对Map对象的引用,则无法重新显示标记 此外,setMap()方法不会触发visible\u changed事件,而setVisible()方法会触发(如果实际切换了可见性) 例如: var map

我想清除谷歌地图上的一个标记

marker.setVisible(false)
marker.setMap(null)
之间有什么区别


但是我不知道,哪一种是正确的?

这两种方法之间的差异似乎没有明确的记录。但是,请注意以下几点:

  • 使用
    setMap(null)
    时,标记将丢失对
    Map
    的引用。如果不保留对
    Map
    对象的引用,则无法重新显示标记

  • 此外,
    setMap()
    方法不会触发
    visible\u 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)
方法,当我们不再显示标记时,应该使用
setMap(null)
方法。

另一个关键区别是
setMap(null)
释放与标记相关的资源,而
setVisible(false)
只会使标记不可见,但仍会分配与标记关联的资源

如果要处理100或1000个标记,这可能会成为一个严重的性能和内存问题。

总之,
setMap(null)
将为1000个标记提供更好的性能