【问题标题】:How can I remove old markers from direction A to B如何从 A 到 B 方向删除旧标记
【发布时间】:2014-08-19 15:10:01
【问题描述】:

我正在使用这个example 在我的方向 A 到 B 添加标记。当我添加新的起点和终点时,如何删除“旧”标记。 我尝试更改 gmarkers[j].setMap(null); 但不起作用。

for (var j=0; j< gmarkers.length; j++) {
      if (boxes[i].contains(gmarkers[j].getPosition()))
          gmarkers[j].setMap(map);
  }

fiddle/original code from this question

【问题讨论】:

  • 标记有什么用?我看到您确认您的盒子确实包含它们,但我不明白为什么。

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


【解决方案1】:

知道了。你有一个 clearBoxes 函数。你也可以use it to clear the markers

function clearBoxes() {
  if (boxpolys != null) {
    for (var i = 0; i < boxpolys.length; i++) {
      boxpolys[i].setMap(null);
    }
  }
  for (var j=0; j< gmarkers.length; j++) {
      gmarkers[j].setMap(null);
  }
  boxpolys = null;
}

【讨论】:

    【解决方案2】:

    你使用 setVisible 函数:

    var marker = new google.maps.Marker({
    position: new google.maps.LatLng(10, -10), 
    map: map
    }); 
    
    marker.setVisible(false);
    

    在你的情况下:

    for (var j=0, m; m = gmarkers[j]; j++)
    {
        m.setVisible(false);
    }
    

    使用 .setMap() 你有点松了参考; setVisible() 切换标记

    最好的

    M

    【讨论】:

    • 这个答案也有效。您应该补充一点,此路径需要修改原始代码以在重新启用标记时使用 setVisible(true)。
    【解决方案3】:

    要清除标记,请执行以下操作(将其地图属性设置为 null):

    for (var i=0;i<gmarkers.length;i++){
      gmarkers[i].setMap(null);
    }
    

    updated fiddle

    【讨论】:

    • 感谢您的帮助,感谢您之前的帮助,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多