现在使用 markercluster,使用 url 参数打开传单标记不起作用
Open leaflet marker using url parameter not working now that markercluster is used
我在 http://atlantaartmap.com. The javascript it uses is http://atlantaartmap.com/lazy_art.js 申请传单。
在第 16 行,我获取了一个 url 参数,可用于打开特定棋子上的地图。创建标记时,第 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
时您的地图仍在缩放。那时由于您的集群,标记尚未添加到地图中,因此不会显示弹出窗口。您可以尝试通过侦听 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());
}
希望对您有所帮助,因为您的案例很复杂,我无法对此进行测试,所以我不确定。祝你好运!
我在 http://atlantaartmap.com. The javascript it uses is http://atlantaartmap.com/lazy_art.js 申请传单。
在第 16 行,我获取了一个 url 参数,可用于打开特定棋子上的地图。创建标记时,第 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
时您的地图仍在缩放。那时由于您的集群,标记尚未添加到地图中,因此不会显示弹出窗口。您可以尝试通过侦听 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());
}
希望对您有所帮助,因为您的案例很复杂,我无法对此进行测试,所以我不确定。祝你好运!