Google地图折线 - 如何删除它?

时间:2010-12-30 18:37:57

标签: javascript google-maps

所以我检查了之前有关这个的问题,这些问题都与V2有关,这没什么用。

所以,我创建了两个标记,将它们保存在数组中作为标记[“to”]和标记[“from”]

然后用这个

添加它们
function route(){
        for(var key in markers) {
           flightPlanCoordinates.push(markers[key].position);
       }
        flightPath = new google.maps.Polyline({
            path: flightPlanCoordinates,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
    });
   flightPath.setMap(map);
}

辉煌。 但。下次我使用它(在数组中使用新标记)它只是在那里添加折线而不删除前一个。 我似乎已经尝试了一切,从第一个数组中删除了flightPath,setMap(null)等等。

在绘制新线之前删除上一行的正确方法是什么?

编辑:已解决 溶液

function route(){
    var flightPlanCoordinates = [];
    for(var key in markers) {
        flightPlanCoordinates.push(markers[key].position);
    }
    if(flightPath) {
        flightPath.setPath(flightPlanCoordinates);
    } else {
        flightPath = new google.maps.Polyline({
            path: flightPlanCoordinates,
            strokeColor: "#FF0000",
            strokeOpacity: 1.0,
            strokeWeight: 2
        });
        flightPath.setMap(map);
    }
}

原因: flightPlanCoordinates需要在范围内初始化,这会在每次使用时重置数组,并正确清理它。 (还要感谢下面的输入,使代码更好。

5 个答案:

答案 0 :(得分:7)

假设“mypolyline”是您的Polyline对象,您还可以尝试:

mypolyline.setPath([]);

这样,您将从折线中取出坐标,这实际上会将其从地图中删除。

答案 1 :(得分:3)

我在var之前没有看到flightPath = new...,所以我认为flightPath是一个全局变量。

function route(){
   //flightPath.setMap(null); Doesnt't work!?
   for(var key in markers) {
       flightPlanCoordinates.push(markers[key].position);
   }
   if(flightPath) {//If flightPath is already defined (already a polyline)
       flightPath.setPath(flightPlanCoordinates);
   } else {
       flightPath = new google.maps.Polyline({
           path: flightPlanCoordinates,
           strokeColor: "#FF0000",
           strokeOpacity: 1.0,
           strokeWeight: 2
      });
      flightPath.setMap(map);//It's not necessary to setMap every time
   }

}

答案 2 :(得分:1)


function traffic(map){
 // polyline
 this.path=null;
 this.map = google.maps.Map(ele, opt);
}
traffic.prototype._draw = function()
{
    //create new polyline
    var path = new google.maps.Polyline({
        path: this.get('latlngArr'),
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });
    //delete old
    var prepath = this.path;
    if(prepath){
        prepath.setMap(null);
    }
    //new polyline
    path.setMap(this.map);

    this.path = path;
}

答案 3 :(得分:1)

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

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

现在您将所有折线对象推送到数组线。您可以通过循环将其隐藏或从地图中删除它:

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

答案 4 :(得分:1)

设置strokeWeight:0然后折线将隐藏