Подтвердить что ты не робот

Центрируется карта 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("");
    }
});
4b9b3361

Ответ 1

Вы уже нашли ответ, который я собирался сказать. Событие изменения размера очень важно для получения права в любое время, когда вы меняете контейнер карты (или, возможно, ее родительский элемент). В моем случае я переворачивал между двумя вкладками (карта и маршруты проезда). Сначала карта была бы правильно отображена на вкладке карты, но переход к направлениям и обратно к карте вызвал оптимизацию отображения.

Если ваша карта показывает только небольшую плитку в одном углу (верхний левый в моем случае), остальные шансы - вам нужно запустить триггер изменения размера.