在定义的缩放级别上显示/隐藏kml

时间:2013-04-01 13:06:43

标签: zoom openlayers kml

我试图隐藏/显示我自己的kml文件(多边形),具体取决于OpenLayers中的缩放级别 - 当达到某个缩放级别时,一层应该隐藏,另一个显示。到目前为止,我找到了这个解决方案(How to load layers depending on zoom level?),但它似乎不适用于我的情况。我是javascript的新手,我不知道我是否使用了这个,我也对这个例子进行了一些修改:

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 个答案:

答案 0 :(得分: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);

```

相关问题