OpenLayers のズーム レベルに応じて、独自の kml ファイル (ポリゴン) を非表示/表示しようとしています。特定のズーム レベルに達すると、1 つのレイヤーが非表示になり、別のレイヤーが表示されます。これまでのところ、この解決策(ズームレベルに応じてレイヤーをロードする方法は?)を見つけましたが、私の場合はうまくいかないようです。私は比較的 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);
これに関する返信とアドバイスをありがとう。