gpt4 book ai didi

javascript - 由于使用了 markcluster,因此使用 url 参数打开传单标记无法正常工作

转载 作者:行者123 更新时间:2023-12-02 16:22:17 26 4
gpt4 key购买 nike

我有传单申请 http://atlantaartmap.com 。它使用的javascript是http://atlantaartmap.com/lazy_art.js .

在第 16 行,我获取了一个 url 参数,该参数可用于打开特定部分的 map 。创建标记时,第 71 行有一段代码,用于检查最近创建的标记是否具有 URL 中引用的 ID。

此代码曾经有效,但我最近向网站添加了标记集群,但它不再有效。它仍然平移并缩放到标记,但弹出窗口不会打开。这是一个例子。

http://atlantaartmap.com/index.html?piece=40

if (marker.feature.properties.pieceID == pieceID) {
map.setView(marker.getLatLng(), newZoom());
marker.openPopup();
}

我不知道为什么,但map.setView()可以工作,而marker.openPopup()不行。

有什么想法吗?提前致谢。

最佳答案

我的猜测(无法测试这一点)是,当您在标记上调用 openPopup 时,您的 map 仍在缩放。此时,由于您的集群,标记尚未添加到 map 中,因此不会显示弹出窗口。您可以尝试通过监听 zoomend 事件来等待 setView 方法完成,然后打开弹出窗口:

if (marker.feature.properties.pieceID == pieceID) {
map.setView(marker.getLatLng(), newZoom()).once('zoomend', function () {
marker.openPopup();
});
}

如果这不起作用,您可以尝试使用 setTimeout 稍微延迟一下:

if (marker.feature.properties.pieceID == pieceID) {
map.setView(marker.getLatLng(), newZoom()).once('zoomend', function () {
setTimeout(function () {
marker.openPopup();
}, 500); // Uses millisecs, you might need to fiddle around with it
});
}

另一个选择可能是等待标记的 add 事件:

if (marker.feature.properties.pieceID == pieceID) {
marker.once('add', function () {
marker.openPopup();
});
map.setView(marker.getLatLng(), newZoom());
}

希望有所帮助,正如所说,由于您的案例的复杂性,我无法对此进行测试,所以我不确定。祝你好运!

关于javascript - 由于使用了 markcluster,因此使用 url 参数打开传单标记无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29004617/

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