将openPopup()与Leaflet.js + Clustering一起使用

时间:2012-03-09 14:45:07

标签: javascript maps leaflet

我一直在使用梦幻般的OpenStreetMap映射库leaflet.js,我刚刚开始实现this clustering plugin。我已经使用当前项目正常工作,该项目将不同的图层加载到地图上并加载到可点击的侧边栏中。

唯一的问题是,如果我单击侧边栏项并且相应的标记位于群集对象中,则会出现错误。我通过检查错误(使用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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

是的,我对该插件遇到了同样的问题。所以我开发了自己的,应该正确定位弹出窗口。我也在构建一些事件,因此您可以在单击群集时运行某些代码,或者阻止缩放级别更改。

https://github.com/cavis/leafpile

另外,我正在为你的类似项目工作 - https://github.com/cavis/slidemapper。它是一个jquery插件,可以在地图上创建幻灯片。我正在努力将我的leafpile插件直接集成到它中。

答案 1 :(得分:0)

也许您必须使用zoomToShowLayer缩放到群集层:

https://github.com/Leaflet/Leaflet.markercluster/issues/75