“marker.setVisible(false)”与“和“marker.setMap(null)”。在谷歌地图v3? [英] What is the difference between "marker.setVisible(false)" and "marker.setMap(null)" in Google Maps v3?

查看:575
本文介绍了“marker.setVisible(false)”与“和“marker.setMap(null)”。在谷歌地图v3?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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 )方法,当我们打算再次在地图上重新显示标记时,以及 setMap(null),当我们不再显示它时。 / p>

    I want to clear a marker on Google Maps.

    What is the difference between marker.setVisible(false) and marker.setMap(null)?

    But I don't know, which is right?

    解决方案

    The difference between the two methods does not seem to be clearly documented. However, note the following:

    • When you use setMap(null), your marker will lose the reference to the Map. If you do not keep a reference to the Map object, you wouldn't be able to reshow the marker.

    • In addition, the setMap() method will not trigger the visible_changed event, while the setVisible() method does (if the visibility is actually toggled).

    Example:

    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
    

    I guess we should be using the setVisible(false) method when we intend to reshow the marker again on the map, and the setMap(null) when we will not be showing it again.

    这篇关于“marker.setVisible(false)”与“和“marker.setMap(null)”。在谷歌地图v3?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆