Масштаб Google Maps переопределяется при использовании файла kml - PullRequest
19 голосов
/ 18 ноября 2011

Как указать уровень масштабирования для карт Google в файле kml или почему мой уровень масштабирования перезагружается при загрузке этого файла.Мой вопрос на самом деле, как мне управлять масштабированием карты по следующей ссылке:

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

1 Ответ

47 голосов
/ 19 ноября 2011

По умолчанию карта центрируется и масштабируется до ограничительной рамки содержимого слоя kml.

Вы можете изменить поведение по умолчанию с помощью свойства preserveViewport объекта google.maps.KmlLayerOptions.Если вы установите значение 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);

EDIT:

Если вы хотите, чтобы карта была всегда центрирована (но не увеличена), когда загружен слой kml,использовать defaultviewport_changed событие объекта google.maps.KmlLayer.Вы должны установить центр карты в центр области просмотра по умолчанию для слоя kml.Событие запускается, когда загружается содержимое слоя kml и вычисляется его окно просмотра по умолчанию.

google.maps.event.addListener(nyLayer, 'defaultviewport_changed', function() {
   var bounds = nyLayer.getDefaultViewport();
   map.setCenter(bounds.getCenter());
});
...