KmlファイルでGoogleマップのズームレベルを指定するにはどうすればよいですか、またはこのファイルをロードしたときにズームレベルが上書きされるのはなぜですか。私の質問は、実際には次のリンクのマップのズームをどのように制御するかです。
http://code.google.com/apis/maps/documentation/javascript/examples/layer-kml-features.html
デフォルトでは、マップは中央に配置され、kmlレイヤーのコンテンツの境界ボックスにズームされます。
google.maps.KmlLayerOptions
オブジェクトのpreserveViewport
プロパティを使用して、デフォルトの動作を変更できます。 true
に設定すると、地図は中央に配置されず、ズームされません。
この例では、次を使用します。
var nyLayer = new google.maps.KmlLayer(
'http://www.searcharoo.net/SearchKml/newyork.kml',
{
suppressInfoWindows: true,
map: map,
preserveViewport: true
});
後でkmlレイヤーのコンテンツを中央に配置してズームする場合は、次を使用します。
var bounds = nyLayer.getDefaultViewport();
map.fitBounds(bounds);
編集:
Kmlレイヤーが読み込まれたときにマップを常に中央に配置する(ズームしない)場合は、defaultviewport_changed
オブジェクトのgoogle.maps.KmlLayer
イベントを利用します。マップの中心をkmlレイヤーのデフォルトのビューポートの中心に設定する必要があります。このイベントは、kmlレイヤーのコンテンツが読み込まれ、デフォルトのビューポートが計算されたときにトリガーされます。
google.maps.event.addListener(nyLayer, 'defaultviewport_changed', function() {
var bounds = nyLayer.getDefaultViewport();
map.setCenter(bounds.getCenter());
});