Центрирование карты Google V3 на маршруте после визуализации направлений

По умолчанию у меня загружается карта 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

13
задан xomena 22 May 2018 в 11:00
поделиться