gpt4 book ai didi

javascript - Google maps V3 dragend 监听器将所有标记添加回 map

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:55 24 4
gpt4 key购买 nike

我有一个使用 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 循环的原因是我的可拖动标记是第一个标记,所以我想从 map 上清除除这个标记之外的所有标记。

问题是:

如果我调用 clear_markers();以任何其他方式它都可以正常工作并且标记已从 map 中删除,所以像这样的东西可以工作:

$('#mybutton').click(function() {
clear_markers();
});

但是,当您拖放绿色标记并且从 dragend 监听器调用它时,它不起作用。标记确实会被删除,但随后会立即重新添加。我知道它们确实会被删除,因为如果我在终止脚本的 for 循环之后在 clear_markers() 函数中添加一些内容,标记就会被删除。但是,如果允许脚本继续,它们仍然存在,这意味着它们已被删除,然后立即重新添加。

我没有调用任何其他代码,所以对我来说这似乎是 api 的错误。有人有什么想法吗?

这是一个显示问题的工作示例:

https://tinker.io/64b68/1

最佳答案

删除 markerClusterer。它正在重新添加标记,而您没有使用它。

更新:

既然需要保留,如果想让marker不显示,需要从markerClusterer中移除:

 markerCluster.clearMarkers();

(但您需要将其设置为全局才能以这种方式使用它)

关于javascript - Google maps V3 dragend 监听器将所有标记添加回 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11248669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com