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