Центрируется карта V3 Google по маршруту после направления
У меня есть загрузка карты 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("");
}
});
Ответы
Ответ 1
Вы уже нашли ответ, который я собирался сказать. Событие изменения размера очень важно для получения права в любое время, когда вы меняете контейнер карты (или, возможно, ее родительский элемент). В моем случае я переворачивал между двумя вкладками (карта и маршруты проезда). Сначала карта была бы правильно отображена на вкладке карты, но переход к направлениям и обратно к карте вызвал оптимизацию отображения.
Если ваша карта показывает только небольшую плитку в одном углу (верхний левый в моем случае), остальные шансы - вам нужно запустить триггер изменения размера.