Клуб API Карт

Включение/ отключение построения маршрута

rtf.ttiyufu
25 мая 2013, 00:53

Добрый день! В JS я новичок, поэтому сразу прошу не пинать. Ситуация такая: создал на карте кнопки, которые включают и выключают метки. Пример 

 

 hostel1 = new ymaps.Placemark([38.937000, 47.208310], ...);
 var hostels = new ymaps.control.Button({
     data: {...
     }
 }, {
     selectOnClick: true
 });
 hostels.events
     .add('click', function () {})
     .add('select', function () {
     myMap.geoObjects.add(hostel1)
 })
     .add('deselect', function () {
     myMap.geoObjects.remove(hostel1)
 });
 hostels.state.set('selected', true);
 myMap.controls.add(hostels, {...
 });

   

Можно ли сделать то же самое с маршрутом? Имеется в виду: нажал кнопку - появился маршрут, отжал кнопку, маршрут исчез. 

Заранее спасибо!

4 комментария
Подписаться на комментарии к посту
можно:
маршрут — это полилиния.
полилиния — это такой же геообъект как и метка

Можно ли пример кода?

Я делал так:

 

routes = new ymaps.route(координаты);
var rt = new ymaps.control.Button({
   data: {...}}, {selectOnClick: true});
   rt.events
      .add('click', function () {})
      .add('select', function () {
         myMap.geoObjects.add(routes)
      })
   .add('deselect', function () {
         myMap.geoObjects.remove(routes)
   });
   rt.state.set('selected', true);
myMap.controls.add(rt , {...}); - такой вариант не катит.

Удавалось только создавать, включая ymaps.route c .then(myMap.geoObjects.add(routes)) прямо внутрь  .add('select', function () {}), но при таком варианте созданный маршрут не отключается по .remove. 

 

 

 

ymaps.route возвращает не маршрут, а объект Promise. Маршрут передается в обработчик при вызове метода then
var myRoute;
ymaps.route(...)
    .then(function (route) {
        myRoute = route;
    });

routes.events
            .add('select', function () {
                  myMap.geoObjects.add(myRoute)
            })
            .add('deselect', function () {
                  myMap.geoObjects.remove(myRoute)
            });