Клуб API Карт

Удаление маршрута.

novelsite
20 апреля 2015, 17:16

Здравствуйте.

 

На карте строится маршрут из точки "А" в точку "В".  Точка "А" фиксирована, точку "В" выбирате пользователь. При построении нового маршрута предыдущий удаляется.

Карта скрываема по кнопке. При скрытии вызывается метод "map.destroy()", если был посроен маршрут то координаты пункта назначения сохраняются отдельно. При показе карты, если есть координаты конечной точки маршрут строится заново.

 

Проблема: в случае повторного показа карты с построением последнего маршрута он (последний маршрут) не удаляется если попытаться задать новый пункт назначения.

Посмотреть можно здесь: https://jsfiddle.net/x3d1y2k7/2/ 

 

Последовательность действий:

 

  1. Нажимаем кнопку "Показать/скрыть карту";
  2. Выбираем место назначения на карте;
  3. Нажимаем кнопку "Показать/скрыть карту";
  4. Выбираем место назначения на карте;

 

Пример на картинках:

 

 

2 комментария
Подписаться на комментарии к посту

У вас ошибка в логике приложения. При показе карты у вас 2 раза вызывается ymaps.route тому, что 2 раза вызывается geocode->getDirection.

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

Спасибо. Решил проблему убрав вызов построения маршрута из метода установки начальной точки (строка №109).

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

Расставил "console.log()" и выяснил что при создании карты с известной конечной точкой уже при установке начальной точки откуда-то известны координаты конечной точки, соответственно маршрут строится уже при задании начальной точки а потом повторно при задании конечной точки. Хотя задание координат в конструкторе идет последовательно:

this.setStartPoint(start);
this.setFinishPoint(end);

Если не трудно, объясните пожалуйста как так выходит.