Google Maps API v3 删除所有折线

Posted

技术标签:

【中文标题】Google Maps API v3 删除所有折线【英文标题】:Google Maps API v3 remove all polylines 【发布时间】:2012-03-19 16:02:05 【问题描述】:

背景很少。我有一个导航设置,当您单击某个导航项时,它会在地图上创建markers。如果您单击不同的导航项,它会删除以前的 markers 并设置新的。

现在我正在与polylines 合作并尝试在这里与polylines 创建相同的概念,但是我遇到了困难。这是我所拥有的:

    // Global variable for array of lines
    var points= [];

设置我的积分。

    line1 = new google.maps.LatLng(line1Start, line1Finish);
    line2 = new google.maps.LatLng(line2Start, line2Finish);
    line3 = new google.maps.LatLng(line3Start,line3Finish);

    points.push(line1, line2, line3);

设置我的折线。

    var polyline = new google.maps.Polyline(
       path:points,
       strokeColor:"#FF0000",
       strokeOpacity:1.0,
       strokeWeight:2
    );

用线条初始化地图。

    polyline.setMap(map);

一切正常。线条被创建并显示在我的标记之间。现在让我们删除它们(或不...)

    function removeLines() 
      if (points) 
           points.length = 0;
      
      points = [];
    

removeLines() 在函数开始时被调用以清除它们,然后设置新的。这确实清除了我在点数组中的点,但是在地图本身上,polylines 仍然显示并且不会像我的标记那样消失。

什么给了?!

【问题讨论】:

【参考方案1】:

您必须执行polyline.setMap(null),这将从地图中删除该线。 Documentation.

【讨论】:

哇..我以前这样做过,但是我在 points 数组上循环并执行 points[i].setMap(null);显然,这需要在折线上而不是点数组上...... DUH。 +1 感谢您帮助我意识到这一点:) 你是怎么得到它的?我尝试 line.setMap(null) 删除行,然后 line.setMap(this.map) 设置新行但不起作用。【参考方案2】:

polyline 只是一个 LatLng 对象的数组,而不是单独的 Polylines。我认为您可能需要一个单独的折线数组,然后您可以循环将它们全部删除。创建一个全局数组线。

 var line = [];
 polyline = new google.maps.Polyline(
        path: points,
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
    );
 line.push(polyline);

现在您将所有折线对象推入数组线。您可以通过像这样循环使其不可见或将其从地图中删除:

for (i=0; i<line.length; i++) 
                           
  line[i].setMap(null); //or line[i].setVisible(false);

【讨论】:

以上是关于Google Maps API v3 删除所有折线的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps v3 - 删除多边形上的顶点

用于折线的 Google Maps v3 href 链接

Google Maps Api v3 - 如何删除集群图标?

将 Google Maps V3 标记的拖动限制到折线

Google Maps API v3 SVG 标记消失

在 Google Maps API v3 中删除标记