Я использовал бы блок с комментарием, довольно добавляющим маркировку там.
, Когда я вижу маркировку, я не могу предположить, что ничто иное не ссылается на блок.
, Если я изменяю поведение блока, тогда имя маркировки не может больше быть соответствующим. Но я не могу просто протянуться и изменить его: я должен буду просмотреть остальную часть метода для определения, какая маркировка обращается к блоку. В которой точке я выясню, что это - не имеющая ссылки маркировка.
Используя комментарий более ясно в этом экземпляре, потому что он описывает поведение блока, не налагая дополнительной работы со стороны специалиста по обслуживанию.
Вы также можете использовать:
directionsDisplay.setDirections({routes: []});
Таким образом, вы можете продолжать использовать одну карту с одним рендерером для всех маршрутов.
Поскольку при каждом вызове создается новый экземпляр DirectionRenderer, поэтому каждый новый экземпляр не знает о предыдущем экземпляре.
Переместить
var directionsDisplay = new google.maps.DirectionsRenderer();
в глобальную (вверху, где были инициализированы все остальные глобальные переменные.)
При этом каждый раз вы будете использовать один экземпляр DirectionRenderer .
У меня была похожая проблема, я пытался с directionsDisplay.setMap(null);
, но она не работала.
Проблема была в том, что объект directionsDisplay
, который я создал, был объявлен локально.
Я изменил его на глобальный, и каждый раз, когда вызывается функция, он будет использовать один и тот же глобальный directionsDisplay
объект и вносить в него изменения. Это определенно удалит предыдущий маршрут, отображаемый на том же объекте.
Это исправление
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
Другие ответы не работали для меня. Я нашел решение из этого вопроса
определить directionsDisplay
только 1 раз (вне обработчика click
)