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

Удалить маршрут с помощью google map

У меня появилось небольшое приложение, использующее функцию Google Direction Service. Он работает хорошо, я могу изменить маршруты, но у меня есть небольшая проблема, когда пользователь может вернуться к списку маркеров после отслеживания маршрута.

Я не могу найти способ удаления маршрутов с помощью карты google. Для маркеров я их храню и делаю setMap(null), не вижу здесь пути...

4b9b3361

Ответ 1

если вы используете DirectionsRenderer для отображения маршрутов, вы можете также называть setMap (null). Таким образом вы удаляете отображаемый маршрут.

Используя примерный код здесь http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

просто позвоните

directionsDisplay.setMap(null);

Ответ 2

Вы также можете использовать:

directionsDisplay.setDirections({routes: []});

Таким образом, вы можете использовать одну карту с одним средством визуализации для всех маршрутов.

Ответ 3

Поскольку на каждом вызове появился новый экземпляр DirectionRenderer, почему каждый новый экземпляр не знает о предыдущем экземпляре.

Переместить

var directionsDisplay = new google.maps.DirectionsRenderer();

для глобального (вверху, где все другие глобальные переменные были инициализированы.)

Таким образом, каждый раз, когда вы используете один экземпляр DirectionRenderer.

Ответ 4

Другие ответы не помогли мне. Я нашел решение от этого вопроса

определить directionsDisplay только 1 раз (вне click -handler)

Ответ 5

Это исправление

// Clear past routes
if (directionsDisplay != null) {
    directionsDisplay.setMap(null);
    directionsDisplay = null;
}

Ответ 6

У меня была аналогичная проблема, я пробовал с directionsDisplay.setMap(null);, но он не работал.

Проблема заключалась в том, что объект directionsDisplay, который я создал, был объявлен локально.

Я изменил его на глобальный, и каждый раз, когда вызывается функция, он будет использовать тот же глобальный объект directionsDisplay и вносить в него изменения. Это, безусловно, удалит предыдущий маршрут, отображаемый на том же объекте.

Ответ 7

установите strokeWeight: 0, тогда полилиния скроет

Ответ 8

Это важно - по крайней мере, в моем случае - что, хотя directionsDisplay может быть объявлен глобально, экземпляр должен быть создан после объекта карты, в противном случае он выдал ошибку ссылки.

    var map;
    var directionsDisplay;

    function initMap() { 

        map = new google.maps.Map(...)

        directionsDisplay = new google.maps.DirectionsRenderer(...);

     }

     function yourFunction() {

        // your code

        directionsDisplay.addListener(...);
     }