当标记位于相同位置时限制缩放级别

时间:2014-08-14 12:49:03

标签: javascript cluster-computing leaflet marker

使用Leaflet 0.7.3和标记集群的最后版本(https://github.com/Leaflet/Leaflet.markercluster),我想重现我使用Google API和相关库(Google Marker Cluster V3& Overlapping Marker Spiderfier)所做的行为V3)。

当您拥有群集的地图并单击一个群集时,API将缩放以绑定此群集中包含的标记。但是当所有标记完全位于同一位置时,缩放将被设置为最大值,这通常很难看(标记周围没有上下文或只有一条街道)。当用户点击一个具有如下代码的群集时,我想限制缩放级别:

        markers.on('clusterclick', function (a) {
            map.fitBounds(a.layer.getBounds());
            if (map.getZoom() > 14) {
                map.setZoom(14);
            }
        });

使用这样的代码,缩放被正确限制为14但是蜘蛛网没有完成(即使我明确地调用a.layer.spiderfy()。是否有我遗漏的东西?

这是小提琴:http://jsfiddle.net/953u41ax/(点击例如36然后12)

2 个答案:

答案 0 :(得分:1)

Eric,您可以通过阻止点击缩放然后在图层上手动调用spiderfy来实现此目的。

地图设置:

        var stationsCluster = new L.MarkerClusterGroup({
          maxClusterRadius: 60,
          iconCreateFunction: null,
          spiderfyOnMaxZoom: true,
          showCoverageOnHover: true,
          zoomToBoundsOnClick: false

Spidery Listener:

    stationsCluster.on('clusterclick', function (a) {
        a.layer.spiderfy();
    });

答案 1 :(得分:0)

您可以在地图上设置最大缩放级别:

map._layersMaxZoom=8

然后以相同的缩放级别禁用聚类:

var markers = L.markerClusterGroup({
        disableClusteringAtZoom: 8
    });

你可以玩这个以获得所需的效果,这只是一个例子。 JSFiddle在这里http://jsfiddle.net/953u41ax/2/