【问题标题】:Limit Zoom level when markers are on the same position标记位于同一位置时限制缩放级别
【发布时间】:2014-10-08 03:05:39
【问题描述】:

使用 Leaflet 0.7.3 和最新版本的 markercluster (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,但 spiderfy 没有完成(即使我明确调用 a.layer.spiderfy()。有什么我遗漏的吗?

这是小提琴:http://jsfiddle.net/953u41ax/(点击 36 和 12 的示例)

【问题讨论】:

    标签: javascript cluster-computing leaflet marker


    【解决方案1】:

    Eric,您可以通过防止点击放大然后在图层上手动调用 spiderfy 来实现这一点。

    地图设置:

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

    蜘蛛侦听器:

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

    【讨论】:

      【解决方案2】:

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

      map._layersMaxZoom=8
      

      然后在同一缩放级别禁用集群:

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

      您可以使用它来获得所需的效果,这只是一个示例。 JSFiddle 在这里http://jsfiddle.net/953u41ax/2/

      【讨论】:

      • 谢谢,但我只想在单击集群时限制缩放,而不是在使用按钮或鼠标滚轮时。
      猜你喜欢
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多