Клуб API Карт

Как удалить маршрут с карты?

workersid
6 мая 2012, 19:02

 Добавляю маршрут на карту:

ymaps.route([
  { type: 'wayPoint', point:point1},{ type: 'wayPoint', point:point2}
], {
mapStateAutoApply: false
}).then(function (route) {
    map.geoObjects.add(route);
    var points = route.getWayPoints(
   points.options.set('iconImageHref', '');
   points.get(0).properties.set("iconContent", "");
   points.get(1).properties.set("iconContent", "");
  }, function (error) {
alert("Возникла ошибка: " + error.message);
  }

Но вот удалить никак не получается, подскажите как правильно сделать? 

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

map.geoObjects.remove(route);

Вы будете смеяться, но именно это у меня тоже НЕ работает...

Можете дать ссылку или привести пример кода, где удаление не работает?

function detsad2(ymaps) {
    var myMap = new ymaps.Map("YMapsID", {
        center: [37.731541,55.76439],
        zoom: 16,
        behaviors: ['drag', 'scrollZoom', 'rightMouseButtonMagnifier'],
        type: "yandex#map"
    });
    ymaps.geoXml.load('http://maps.yandex.ru/export/usermaps/8FVmZPBgj_GH8NxKUu44_Dv-wQ3n-S9D/')
    .then(function (res) {
        myMap.geoObjects.add(res.geoObjects);
    });
    var sizeButton = new ymaps.control.Button({
        data: {
            content: 'http://api.yandex.ru/i/maps/icon-fullscreen.png" style="margin-top:6px;">',
            title: 'Развернуть карту на весь экран'
    }});
    var button1 = new ymaps.control.Button({
        data: { content: 'от Семеновской'
    }});
    var button2 = new ymaps.control.Button({
        data: { content: 'от ш.Энтузиастов'
    }});
    var myToolbar = new ymaps.control.MapTools(['drag','ruler', sizeButton, button1, button2
    ]);

    sizeButton.events.add('select', function() {
    });
    sizeButton.events.add('deselect', function() {
    });
    var router1 = ymaps.route([
        [37.720170,55.782379],
        [37.732272,55.765174]], {
            mapStateAutoApply: false
    });   
    button1.events.add('select', function() {
        $('#YMapList').append('Нажмите на отрезок пути для получения дополнительной информации');
        router1.then(function (route) {
                myMap.geoObjects.add(route);
                var points = route.getWayPoints(); 
                points.options.set('preset', 'twirl#redStretchyIcon');
                points.get(0).properties.set('iconContent', 'автобус 702,254
маршрутка 69м,202м');
                points.get(1).properties.set('iconContent', 'ост."проспект Буденного, 24"');
        },
        function (error) {
            allert("Возникла ошибка: " + error.message);
    })});
    button1.events.add('deselect', function() {
        myMap.geoObjects.remove(route);
        myMap.geoObjects.remove(router1);
        myMap.container.fitToViewport(false);
        $('#YMapList').text('');
    });
    button2.events.add('select', function() {
        $('#YMapList').append('Нажмите на отрезок пути для получения дополнительной информации');
    });
    button2.events.add('deselect', function() {   
        $('#YMapList').text('');
        /*$('#YMapList').append('no click');*/
    });       
    var searchControl = new ymaps.control.SearchControl({ resultsPerPage: 5, width: 325 });
    var TrafficButton = new ymaps.control.TrafficControl();
    myMap.controls
        .add("zoomControl")
        .add(myToolbar, { left: 2, top: 2 })
        .add(TrafficButton, { right: 2, top: 32 })
        .add(new ymaps.control.MiniMap({type: 'yandex#map'}))
        .add(new ymaps.control.TypeSelector(["yandex#map", "yandex#satellite", "yandex#hybrid", "yandex#publicMap", "yandex#publicMapHybrid"]), { right: 2, top: 2 }
    );
};

как вы хотите чтобы обработчик deselect-a "увидел" параметр в другой функции? В javascript так не бывает.

нужно декларировать route в родительском scope