web-dev-qa-db-ja.com

kmlファイルを使用すると、Googleマップのズームが上書きされます

KmlファイルでGoogleマップのズームレベルを指定するにはどうすればよいですか、またはこのファイルをロードしたときにズームレベルが上書きされるのはなぜですか。私の質問は、実際には次のリンクのマップのズームをどのように制御するかです。

http://code.google.com/apis/maps/documentation/javascript/examples/layer-kml-features.html

19
Mike

デフォルトでは、マップは中央に配置され、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());
});
48
Tomik