Клуб API Карт

Удалить все маршруты с карты

Пост в архиве.

Привет!

Есть ли способ удалить сразу все маршруты с карты?

Сейчас удаляю вот так вот:

function removeroute() {
    mainRouter && mainMap.geoObjects.remove(mainRouter);
}

 

Удаляет через раз только. Иногда вообще маршрут удаляет, а некоторые точки остаются.

15 комментариев

добавляйте все объекты (маршрут и метки в отдельную коллекцию),

которую один раз нужно добавить на карту, а в методе removeroute вызывайте myCollection.removeAll()

Не совсем понимаю, как добавить в коллекцию маршрут. Примеры не помогли.

так же как в map.geoObjects

Что делаю не так?

 

var mainMap, mainRouter;

function map() {
    $('#map').empty();
   
    mainMap = new ymaps.Map('map', {
            center: [55.754178, 37.624678],
            zoom: 12,
            behaviors: ['default', 'scrollZoom']
        }, {
            minZoom: 8
        }
    );

    mainMap.controls.add('zoomControl')
        .add('mapTools');
   
    myCollection = new ymaps.GeoObjectCollection();
   
    addroute();
};

function removeroute() {
    mainRouter && mainMap.geoObjects.remove(mainRouter);
}
   
function addroute() {
    removeroute();

    ymaps.route(geos[pnum-2], {
        mapStateAutoApply: true
    }).then(function (mainroute) {
        myCollection.add(mainRouter = mainroute);
    });
   
    myMap.geoObjects.add(myCollection);
};

я вам написал

 

которую один раз нужно добавить на карту

вы добавляете ее при каждой прокладке маршрута

 

 и это тоже не поменяли

removeroute вызывайте myCollection.removeAll()

removeroute исправил, myMap.geoObjects.add(myCollection); перенес в функцию map перед addroute. Все равно маршрут на карте не отображается.

Забыл поменять myMap на mainMap. Исправил - заработало, маршрут добавляется и удаляется.

Но главная проблема все равно осталась — удаляет через раз, а иногда удаляет, но остаются пустые метки.

дай ссылку на страницу

http://test.avangardtaxi.ru/

Если добавить ещё 2 точки, выбрать 1, 2 и 4 любые (метро, аэропорт, вокзал), а 3 инпут и ввести любой адрес, затем удалить 2ю точку, то появится пустая метка, либо маршрут не удалится вообще и на него наложится новый.

Весь день мучаюсь с Firebug'ом, уже сотню раз весь код пролистывал, никак не могу найти, в чем причина.

у меня не воспроизвелось

опиши подробнее порядок действий

Делаем 4 адреса. 1, 2, и 4 адреса - любой вокзал/аэропорт/метро. 3 - адрес, например 2-я Бауманская, 5. Удаляем 2 адрес (остается 3) и видим левую метку.

я делаю так:

1. в первом поле жму вокзал, появляется "Белорусский"

2. во втором жму аэропорт, появляется "Внуково"

3. добавляю поле, жму метро, появляется "Авиамоторная"

4. добавляю поле (становится 3-им) в адрес вбиваю "2-я Бауманская, 5"

вижу 4-ре метки

5. жму у второй (авиамоторная) удалить у меня остается 3 метки

вроде всё правильно

Я уже запутался, раньше получалось, сейчас вроде маршрут всегда удаляется. Не пойму только, почему метка пустая, в firebug в DOM переменные viaPoint0_twirl viaPoint0_title не пустые.

Спасибо за потраченное время. Буду разбираться, если повторится — отпишусь.

Поспешил с выводами. Сейчас опять щелкал адреса и вдруг у маршрута появилась 5 точка «Бауманская». Она просто не удалилась после того, как я поменял «Бауманская» на «2-я Бауманская, 5» и перестроил маршрут.