将 openPopup() 与 Leaflet.js + 集群结合使用
-
10-12-2019 - |
题
我已经使用很棒的 OpenStreetMap 映射库 leaflet.js 一段时间了,我刚刚开始实施 这个聚类插件. 。我已经让它在当前项目中正常工作,该项目将不同的图层加载到地图上并加载到可单击的侧边栏中。
唯一的问题是,如果我单击侧边栏项目并且相应的标记位于聚类对象中,则会收到错误。我通过检查错误(使用 try/catch)并缩放来解决这个问题,以便图层可见,如下所示:
$('.item').click(function() {
currentlayer = this.id;
...
try {
geojson._layers[currentlayer].openPopup();
} catch(e) {
map.setView(geojson._layers[currentlayer]._latlng, 16);
geojson._layers[currentlayer].openPopup();
}
...
return false;
});
唯一的问题是,在缩放后尝试运行 openPopup() 方法时,我遇到了相同的错误,但如果我再次单击侧边栏,弹出窗口显示正常。您可以在这里看到它的实际效果:
http://www2.lichfielddc.gov.uk/myarea/map2.php
有任何想法吗?
解决方案
是的,我对该插件有同样的问题。所以我开发了自己的,应该正确地定位弹出窗口。我还在一些事件中构建,因此您可以在单击群集时运行一些代码,或防止从更改的缩放级别进行缩放。
https://github.com/cavis/leafpile
此外,我正在研究与您的类似项目 - https://github.com/cavis/slidemapper。它是一个jQuery插件,用于创建在地图上遵循的幻灯片。我正在努力将我的叶子插件直接整合到其中。
其他提示
也许您必须使用缩放到集群层 zoomToShowLayer
:
不隶属于 StackOverflow