传单缩放地图层

Leaflet Zoom Map Layer

本文关键字:地图 图层 缩放 单缩放      更新时间:2023-09-26

我正在寻找功能,使我能够在缩放地图时丢失部分图层。

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})
        },

File GeoJson build that:

      var road = {
     "type": "FeatureCollection",
    "features": [
    { "type": "Feature", "properties": { "density" : "road_1"....
    { "type": "Feature", "properties": { "density" : "road_2"....
    { "type": "Feature", "properties": ....

更新:

这样有前途吗?有什么需要改进的?

 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',               
        };
    }
}

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

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});
   }
 });
}