javascript - Google Maps v3 中的 "marker.setVisible(false)"和 "marker.setMap(null)"有什么区别?

标签 javascript google-maps google-maps-api-3 google-maps-markers

我想清除 Google map 上的标记。
marker.setVisible(false) 和有什么区别和 marker.setMap(null) ?

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

最佳答案

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

  • 当您使用 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)当我们打算在 map 上重新显示标记时的方法,setMap(null)当我们不再展示它时。

    关于javascript - Google Maps v3 中的 "marker.setVisible(false)"和 "marker.setMap(null)"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3647711/

    相关文章:

    javascript - 如何在Google map 的可见区域显示半径或圆

    javascript - 如何调整 xtermjs 终端的大小

    javascript - 谷歌地图 API v3 : find multiple paths using DistanceMatrixService

    R 传单 RStudio Viewer 空白(灰色)贴图 [Windows 7]

    swift - 谷歌地图崩溃 GMSOverlayDisplayLayer

    javascript - 谷歌地图标记在链接 css 文件后不显示位置

    javascript - 这个 jQuery 验证可以重构吗?

    javascript - 有限制的自动完成

    javascript - 滚动到页面上的元素,无需 jquery (Vanilla Javascript)

    javascript - Google 地理编码 - 坐标未返回到输入框中