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 删除所有折线的主要内容,如果未能解决你的问题,请参考以下文章