2013-04-01 21 views
0

我试图根据OpenLayers中的缩放级别来隐藏/显示我自己的kml文件(多边形) - 当达到一层应该隐藏的某个缩放级别以及另一个显示时。到目前为止,我发现这个解决方案(How to load layers depending on zoom level?),但它似乎没有在我的情况下工作。 I'm比较新的JavaScript和我不如果使用的I'm这个权利知道,我也做了一些修改的例子:在定义的缩放级别上显示/隐藏kml

map.events.register("zoomend", map, zoomChanged); //inserted in function init() 

function zoomChanged() 
    { 
     if (map.getZoom() == 18) 
     { 
     kml1.setVisibility (true); 
     kml2.setVisibility (false); 
     } 
     else if (map.getZoom() == 19) 
     { 
     kml1.setVisibility (false); 
     kml2.setVisibility (true); 
     } 
    } 

我也尝试另一种解决办法隐瞒kml1,但在这种情况下,我的图层不是绘制的。该LayerSwitcher工程 - 该层定义缩放级别无法选择,但缩小时(当层已经选择)没有什么可见的:

var kml1 = new OpenLayers.Layer.Vector("prehled", 
       {minScale: 1000,},        //1:1000 
       { 
       projection: map.displayProjection, 
       strategies: [new OpenLayers.Strategy.Fixed()], 
       protocol: new OpenLayers.Protocol.HTTP({ 
        url: "kml/zahrada.kml", 
        format: new OpenLayers.Format.KML({ 
         extractStyles: true, 
         extractAttributes: true, 
        }) 
       }) 
      }); 
    map.addLayer(kml1); 

感谢有这方面的反应和意见。

回答

1

尝试:

var kml1 = new OpenLayers.Layer.Vector("prehled", { 
      minResolution: map.getResolutionForZoom(18), // or the desired maximum zoom 
      projection: map.displayProjection, 
      strategies: [new OpenLayers.Strategy.Fixed()], 
      protocol: new OpenLayers.Protocol.HTTP({ 
       url: "kml/zahrada.kml", 
       format: new OpenLayers.Format.KML({ 
        extractStyles: true, 
        extractAttributes: true 
       }) 
      }) 
     }); 
map.addLayer(kml1); 

```

+0

非常感谢你,我花了好几天在这个即使只有一行的代码是魅力:-) it's工作! – pavli