Удалить маршрут с помощью google map
У меня появилось небольшое приложение, использующее функцию Google Direction Service. Он работает хорошо, я могу изменить маршруты, но у меня есть небольшая проблема, когда пользователь может вернуться к списку маркеров после отслеживания маршрута.
Я не могу найти способ удаления маршрутов с помощью карты google. Для маркеров я их храню и делаю setMap(null)
, не вижу здесь пути...
Ответы
Ответ 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(...);
}