【问题标题】:leaflet control geojson layers by zoom level传单按缩放级别控制geojson图层
【发布时间】:2014-05-06 03:05:21
【问题描述】:

只是在寻找一种通过缩放级别控制 geojson 图层的方法,例如 minZoom , maxZoom for tileLayers,有什么想法吗?

描述:geojson点层,不同类别的点,比如国家首都,省议会,部门,首都,其余的简单城镇。 目标:在缩放级别 4 仅显示国家首都(仅一个点) 在缩放级别 6 显示所有 24 个省议会大厦(您只会看到其中的一部分) 在缩放级别 8 显示 524 个部门的国会大厦(您只会看到其中的一部分) 在缩放级别 10 显示其他城镇,同样的想法。

提前致谢。 JC

【问题讨论】:

    标签: zooming leaflet geojson


    【解决方案1】:

    查看Map events in the Leaflet Docs

    您可以订阅“zoomend”事件以及“zoomstart”和其他一些事件

    map.on('zoomend', function (e) {
        myZoomHandler();
    });
    

    在您的缩放处理函数中,循环遍历您的图层并根据需要添加或删除图层。

    function myZoomHandler() {
        var currentZoom = map.getZoom();
        switch (currentZoom) {
            case 4:
             //show Capitols
            break;
            case 6:
             //show Provinces
            break;
            default:
             // etc
            break;
        }
    }
    

    【讨论】:

      【解决方案2】:

      Leaflet 有一个viewereset 事件,在地图更新(加载、缩放)时触发。 您可以执行以下操作:

      map.on('viewreset', function() {
         var zoom = this.getZoom();
         // show/hide layers based on zoom level
      }, map);
      

      显示/隐藏图层的一种方法是通过 L.GeoJSON 的 setStyle() 方法(使用 displayvisibility 属性)。

      【讨论】:

      • 这是错误的或过时的。您可以这样做,但您需要使用 opacity 属性 - display 和 visibility 不是有效属性
      猜你喜欢
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 2020-02-25
      • 2013-11-18
      • 2016-07-06
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      相关资源
      最近更新 更多