所以我检查了之前有关这个的问题,这些问题都与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需要在范围内初始化,这会在每次使用时重置数组,并正确清理它。 (还要感谢下面的输入,使代码更好。
答案 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然后折线将隐藏