2013-04-01 19 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