Leaflet 放大以使标记在传单中可见

Leaflet 放大以使标记在传单中可见,leaflet,Leaflet,我正在使用传单js()和传单.markerclusterer()在我的网站上创建地图。我几乎完成了这项工作,但我想不出最后一部分 我要做的是在视口中显示标记列表,如下所示: 然后,如果单击最下面一行中的一个,它将panTo()正确的区域 我遇到的问题是,如果(正如您在我的示例中所看到的)链接恰好位于这个级别的集群中,那么您就看不到它。你怎么能强迫它变焦呢 我需要的是一种方法,一次放大一个步骤,直到它可见 window.VARS.markerCluster.eachLayer(function

我正在使用传单js()和传单.markerclusterer()在我的网站上创建地图。我几乎完成了这项工作,但我想不出最后一部分

我要做的是在视口中显示标记列表,如下所示:

然后,如果单击最下面一行中的一个,它将
panTo()
正确的区域

我遇到的问题是,如果(正如您在我的示例中所看到的)链接恰好位于这个级别的集群中,那么您就看不到它。你怎么能强迫它变焦呢

我需要的是一种方法,一次放大一个步骤,直到它可见

window.VARS.markerCluster.eachLayer(function (layer) {

        if (layer.options.linkid == linkid) {

                console.dir(layer);
                window.VARS.Map_Modal.panTo(layer.getLatLng());

        }

});
这是我在谷歌地图上使用的一些代码,实现了同样的目标,但显然不是

           var zoom = window.VARS.Google_Map_Modal.getZoom();
            window.VARS.Google_Map_Modal.setCenter(window.VARS.markers[e.getAttribute('data-what')].getPosition());
            var zoomInterval = setInterval(function() {
                 if(!window.VARS.markers[e.getAttribute('data-what')].map) {
                     zoom++
                     if (zoom < 15) {
                        window.VARS.Google_Map_Modal.setZoom(zoom++);
                    }
                 } else {
                     clearInterval(zoomInterval);
                 }
            }, 300);
var zoom=window.VARS.Google_Map_Modal.getZoom();
window.VARS.Google_Map_Modal.setCenter(window.VARS.markers[e.getAttribute('data-what'))].getPosition();
var zoomInterval=setInterval(函数(){
if(!window.VARS.markers[e.getAttribute('data-what')].map){
变焦++
如果(缩放<15){
window.VARS.Google_Map_Modal.setZoom(zoom++);
}
}否则{
clearInterval(zoomInterval);
}
}, 300);

好的,所以不要直接回答原来的问题,但这就是我要实现的目标。使用此额外插件:

我能够在特定阶段禁用集群(当标记较少时):

然后我不需要放大,因为它们在当前视口中可见。我相信这不是一个完美的解决方案,但它应该满足我的需要


我仍然有兴趣看看是否有人有其他解决方案(为将来的其他人)

好的,所以不要直接回答最初的问题,但这就是我想要实现的。使用此额外插件:

我能够在特定阶段禁用集群(当标记较少时):

然后我不需要放大,因为它们在当前视口中可见。我相信这不是一个完美的解决方案,但它应该满足我的需要


我仍然有兴趣看看是否有人有其他解决方案(为将来的其他人)

因为您使用的是传单.markercluster库,您可以简单地使用
zoomToShowLayer
,这是
markerClustersGroup
对象的一种方法。因此,要做到这一点,您必须找到引用
markerCLustersGroup
对象的变量,该对象在代码中的某个地方进行了初始化:

var myMarkerClusterGroup = L.markerClusterGroup();
一旦您拥有了您的组,您可以像这样调用所述方法:

myMarkerClustersGroup.zoomToShowLayer(layer);
…而不是使用
window.VARS.Map_Modal.panTo(layer.getLatLng())

以下是此方法的文档,来自:


zoomToShowLayer(图层,回调):缩放以显示给定的标记(如果需要,则进行蜘蛛化),当标记在地图上可见时调用回调。

由于您使用的是传单.markercluster库,因此可以轻松使用
zoomToShowLayer
,这是
markerClustersGroup
对象的一种方法。因此,要做到这一点,您必须找到引用
markerCLustersGroup
对象的变量,该对象在代码中的某个地方进行了初始化:

var myMarkerClusterGroup = L.markerClusterGroup();
一旦您拥有了您的组,您可以像这样调用所述方法:

myMarkerClustersGroup.zoomToShowLayer(layer);
…而不是使用
window.VARS.Map_Modal.panTo(layer.getLatLng())

以下是此方法的文档,来自:

zoomToShowLayer(图层,回调):缩放以显示给定的标记(如果需要,则进行蜘蛛化),当标记在地图上可见时调用回调