По умолчанию у меня загружается карта V3 и центрируется на определенной долготе / широте. После загрузки пользователь может ввести свой адрес, чтобы проложить маршрут к этой точке. Когда это происходит, размер карты изменяется так, чтобы слева от нее размещалось поле направлений. Из-за этого маршрут в окне карты находится не по центру. Я попробовал следующий код, который, как мне казалось, должен работать, но безрезультатно.
Новая реализация: Если я каким-либо образом изменяю размер окна, оно начинает работать должным образом.
Обнаружена проблема: Мне нужно было вызвать google.maps.event.trigger (map, 'resize')
после того, как я изменил размер контейнера карты.
directionsService.route(query, function(result,status) {
if (status === google.maps.DirectionsStatus.OK) {
// This sets the directions container to display:block and resizes the map
document.getElementById('map-container').className = "directions";
directions.setDirections(result);
var bounds = result.routes[0].bounds;
map.fitBounds(bounds);
map.setCenter(bounds.getCenter());
} else {
alert("");
}
});
ОБНОВЛЕНИЕ 2018-05-22
С новым выпуском средства визуализации в версии 3.32 Maps JavaScript API событие изменения размера больше не является частью класса Map
.
В документации указано
При изменении размера карты центр карты фиксируется.
Теперь при полноэкранном режиме управления центр сохраняется.
Больше нет необходимости запускать событие изменения размера вручную.
] источник: https://developers.google.com/maps/documentation/javascript/new-renderer
google.maps.event.trigger (карта, "изменение размера");
не имеет любой эффект, начиная с версии 3.32