Ответ 1
По умолчанию карта центрируется и масштабируется до ограничивающей рамки содержимого слоя 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());
});