【发布时间】:2012-06-28 16:09:51
【问题描述】:
我有一个使用 API V3 的谷歌地图。它上面有一个可拖动的标记,然后是其他静态标记的负载。我已经为可拖动标记设置了一个 dragend 侦听器,它调用了一个名为 clear_markers() 的函数,如下所示:
google.maps.event.addListener(marker_0, "dragend", function() {
clear_markers();
});
function clear_markers()
{
if (markers) {
for (var i = 1; i <= markers.length; i++ ) {
if(typeof markers[i] !== "undefined") {
markers[i].setMap(null);
}
}
}
}
我从 1 而不是 0 开始 for 循环的原因是我的可拖动标记是第一个标记,所以我想清除地图上除此之外的所有标记。
问题来了:
如果我调用 clear_markers();以任何其他方式,它都可以正常工作,并且标记已从地图中删除,因此类似这样的工作:
$('#mybutton').click(function() {
clear_markers();
});
当您拖放绿色标记并从 dragend 侦听器调用它时,它不起作用。标记确实被删除,但随后它们立即被重新添加。我知道它们确实被删除了,因为如果我在杀死脚本的 for 循环之后在 clear_markers() 函数中放入一些东西,标记就会被删除。但是,如果允许脚本继续,它们仍然存在,这意味着它们已被删除,然后立即重新添加。
我没有调用任何其他代码,所以对我来说这似乎是 api 的一个错误。有人有什么想法吗?
这是一个显示问题的工作示例:
【问题讨论】:
-
您没有提供足够的信息来说明问题所在。发布一个显示问题的地图链接,显然系统中还有其他一些代码导致了问题。
-
我已经发布了链接,请看页面底部显示所有JS和HTML的链接
-
他非常清楚地发布了指向 tinker.io 的链接,尽可能清楚地显示问题
-
但是,我没有看到那个例子中的 green_marker(现在你已经发布了)this 不存在。
-
对不起我的错现在再试一次!
标签: javascript jquery google-maps google-maps-api-3