Клуб API Карт

Не получается удалить Overlay

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

Всем привет!

Народ подскажите пож, че делаю не так? У меня не удаляется старый маршрут с карты при повторном вызове функции! Какова вообще область видимости оверлеев типа YMaps.Router и Placemark и как их удалять?

function list_route(value) {
    map.removeOverlay(router);
    var where_to = 'Москва';

    var router = new YMaps.Router([value, where_to]);
    YMaps.Events.observe(router, router.Events.Success, function() {
        router.getWayPoint(0).setIconContent('Точка отправления');
        router.getWayPoint(1).setIconContent('Точка прибытия');
        map.addOverlay(router);
    });
}

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

Вы объявляете переменную router внутри функции, поэтому эта переменная видна только внутри нее.

Сделайте так:

var router;

function list_route(value) {

    map.removeOverlay(router);
    var where_to = 'Москва';
    router = new YMaps.Router([value, where_to]);


    YMaps.Events.observe(router, router.Events.Success, function() {
    router.getWayPoint(0).setIconContent('Точка отправления');
    router.getWayPoint(1).setIconContent('Точка прибытия');
    map.addOverlay(router);
    });
}

А вообще, если не хотите стрететь все объекты с карты, то можно вызвать метод removeAllOverlays():

map.removeAllOverlay();

СПС за ответ!

Сори не скопировал первую строчку)

1. var router;

У меня так и было написано, но не получается почему-то(

Ща попробую map.removeAllOverlay();

map.removeAllOverlays(); Получилось!

Огромное спасибо!

У вас в функции создавалась локальная переменная по имени совпадающая с глобальной.  В примере Cаши  убран var из тела функции: var router = new YMaps.Router([value, where_to]);

Да, да, да! Вы правы! Я чет упустил этот момент и два раза объявил переменную, а еще спрашиваю "В чем косяк" :)) 

Спасибо за помощь!