0

OpenLayers のズーム レベルに応じて、独自の kml ファイル (ポリゴン) を非表示/表示しようとしています。特定のズーム レベルに達すると、1 つのレイヤーが非表示になり、別のレイヤーが表示されます。これまでのところ、この解決策(ズームレベルに応じてレイヤーをロードする方法は?)を見つけましたが、私の場合はうまくいかないようです。私は比較的 Ja​​vaScript に慣れていないので、この権利を使用しているかどうかわかりません。また、例にいくつかの変更を加えました。

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

これに関する返信とアドバイスをありがとう。

4

1 に答える 1

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

```

于 2013-04-01T16:29:44.923 に答える