2016-11-15 74 views
0

我正在查看使地图缩放时丢失部分图层的功能。单张缩放地图图层

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": .... 

回答

1

我不知道如果我理解你的权利,但你要删除放大时添加图层并在缩小时添加图层?

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

我理解你的意思吗?

UPDATE:

您可以通过以GeoJSON层迭代和fillOpacity设置为0隐藏一些geoms:

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

那么你明白了,但是这个图层被放置在文件GeoJSON中。我想关闭文件的一部分,例如。高变焦时无法看到的多个多边形。 –

+0

然后创建'L.LayerGroup's与您想要添加/从地图中删除的单张图层组,将单个图层添加到这些组(可能通过'L.GeoJSON'的'eachLayer'),然后添加/根据需要删除这些组。 – IvanSanchez

0

更新:

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

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