【问题标题】:Leaflet Zoom Map Layer传单缩放地图图层
【发布时间】:2016-11-15 10:43:02
【问题描述】:

我正在寻找可以让我在缩放地图时丢失部分图层的功能。

map.on('zoomend', onZoomend)
function onZoomend(feature){
if(map.getZoom()<11) 
 {map.addLayer("road_2"==feature.properties.density)};

if(map.getZoom()>11)
 {map.removeLayer("road_2"==feature.properties.density)};
  }

我的 GeoJson 文件位于面板层中:

var overLayers = [
{
    group: "Layer",
    collapsed: true,
    layers: [
        {   
            name: "Road",
            icon: iconByName('fuel_road'),              
            layer: L.geoJson(road,{style: style_road})
        },

文件GeoJson bulid:

      var road = {
     "type": "FeatureCollection",

    "features": [
    { "type": "Feature", "properties": { "density" : "road_1"....

    { "type": "Feature", "properties": { "density" : "road_2"....

    { "type": "Feature", "properties": ....

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

    更新:

    这种方式有前途吗?它必须改进什么?

     function style_road(feature) {
        if  ("road_1" == feature.properties.density) {
            return {
                weight: 3,
                opacity:function()
                        {if (zoom > 13) {opacity:0},
                        else (zoom < 13) {opacity:1}, 
                        },
                color: 'red',
            };
        } 
        else if ("road_2" == feature.properties.density){
            return {
                weight: 1.5,
                opacity: 1,
                color: 'red',               
            };
        }
        else {
            return {
                weight: 0.5,
                opacity: 1,
                color: 'red',               
            };
        }
    }
    

    【讨论】:

      【解决方案2】:

      我不确定我是否理解正确,但是您想在放大时删除图层并在缩小时添加图层?

      You just can use:
      if(map.getZoom()<11){
          mylayer.removeFrom(map);
      }else{    
          mylayer.addTo(map);
      }
      

      我没听错吗?

      更新:

      您可以遍历 GeoJson 层并将 fillOpacity 设置为 0 以隐藏一些几何图形:

      var geoJsonLayer = L.geoJson(myGeoJson).addTo(map);
      if(map.getZoom()<11){
       geoJsonLayer.eachLayer(function(layer) {
         if(layer.feature.properties.density == "road_"){
             layer.setStyle({fillOpacity:0});
         }
       });
      }
      

      【讨论】:

      • 你明白了,但这层是放在文件 GeoJSON.我想关闭文件的一部分,例如。许多在高缩放时不可见的多边形。
      • 然后创建L.LayerGroups 以及要从地图中添加/删除的传单图层组,将各个图层添加到这些组(可能通过L.GeoJSONeachLayer),然后根据需要添加/删除这些组。
      猜你喜欢
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多