У меня карта 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
С новой версией средства визуализации в JavaScript API Google Maps для версии 3.32 событие изменения размера больше не является частью Map
class.
Документация гласит
При изменении размера карты центр карты фиксируется
source: https://developers.google.com/maps/documentation/javascript/new-renderer
google.maps.event.trigger(map, "resize");
не имеет никакого эффекта, начиная с версии 3.32