Google Maps API v3会删除所有折线

时间:2012-03-01 06:12:27

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

背景很少。我有一个导航设置,当您单击某个导航项时,它会在地图上创建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仍然显示并且不会像我的标记一样消失。

是什么给了什么?!

2 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:14)

折线只是LatLng对象的数组,而不是单独的折线。我想你可能需要一个单独的折线数组,你可以循环将它们全部删除。创建一个全局数组行。

 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);
}