Клуб API Карт

4 комментария

Дайте ссылку на этот код

Вот код который пытаюсь проверить вот тут https://tech.yandex.ru/maps/jsbox/2.1/mapbasics

По клику на poiButton  хочется удалить построенный маршрут

 

 

var myMap;

// Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);
var routeEditor;
function init () {
 routeEditor = new ymaps.control.RouteEditor();


var poiButton = new ymaps.control.Button({
        data: {
            content: "ПОИ",
          /*  image: 'my_button.png',*/
            title: "Добавить точку"
        },
        options: {
            maxWidth: [28, 150, 178]
        }
    });
    // Создание экземпляра карты и его привязка к контейнеру с
    // заданным id ("map").
    myMap = new ymaps.Map('map', {
        // При инициализации карты обязательно нужно указать
        // её центр и коэффициент масштабирования.
        center: [55.76, 37.64], // Москва
        zoom: 10
    });

    document.getElementById('destroyButton').onclick = function () {
        // Для уничтожения используется метод destroy.
        myMap.destroy();
    };
   
   
     poiButton.events.add('click', function (e) {
        myMap.geoObjects.remove(routeEditor.getRoute());
    });
   
    myMap.controls.add(routeEditor);
    myMap.controls.add(poiButton, {float: 'left', floatIndex: 100});

}

Этот контрол – вещь в себе. Он не особо рассчитан на кастомизацию. Если нужно что-то менять проще написать свой.

Сам маршрут через него добавляется в скрытую коллекцию, чтобы его случайно нельзя было удалить, вызвав, например, myMap.geoObjects.removeAll();

 

Там можно сделать хак и удалить его через родителя

 

ymaps.ready(init);

 

function init () {

var routeEditor = new ymaps.control.RouteEditor();

var poiButton = new ymaps.control.Button({

        data: {

            content: "ПОИ",

          /*  image: 'my_button.png',*/

            title: "Добавить точку"

        },

        options: {

            maxWidth: [28, 150, 178]

        }

    });

    // Создание экземпляра карты и его привязка к контейнеру с

    // заданным id ("map").

    var myMap = new ymaps.Map('map', {

        // При инициализации карты обязательно нужно указать

        // её центр и коэффициент масштабирования.

        center: [55.76, 37.64], // Москва

        zoom: 10

    });

    

    poiButton.events.add('click', function (e) {

        var route = routeEditor.getRoute();

        

        if(route && route.getParent()) {

            route.getParent().remove(route);

        }

    });

    

    myMap.controls.add(routeEditor);

    myMap.controls.add(poiButton, {float: 'left', floatIndex: 100})

}

Теперь понятно, Спасибо!