Клуб API Карт

как удалить метку при клике на элемент вне карты?

kzk.marat
13 декабря 2016, 10:46

Добрый день.
Есть проблема к которой к сожалению я не могу придумать решения, грубо говоря я в тупике.
Есть карта Яндекс, я в нее добавляю метки через 

function savePlacemark( coords, coordsAddress, index ) {

        var coordsArray = coords.split(',');

        // Создание метки
        var savePlacemark = new ymaps.Placemark(
            // Координаты метки
            coordsArray,
            {
                //iconContent: '1',
                balloonContent: coordsAddress
            }
        );

        // Добавление метки на карту
        myMap.geoObjects.add( savePlacemark, index );

    }


При добавлении метки, я в span кнопки удаления метки добавляю параметр data-index и там указываю index ( который сам задаю через i++ ).
Думал решением будет заданный index на каждую метку, но, это не так.
Если удалить первую метку определив на нее ссылку по index, то, остальные метки перестают удалятся. А если удалять с конца, то, все ок.

Вот скрипт удаления

$( document ).on( $clickAction, $deleteMarkedplaceButtonClass, function (e) {
        e.preventDefault();

        var elem = $( this ),
            index = elem.attr( $dataIndexAttr ),
            wrapperBlock = elem.parent().parent(),
            selectedPlacemark = myMap.geoObjects.get( index ); // тут я определяю ссылку на метку

        myMap.geoObjects.remove( selectedPlacemark ); // удаляю по ссылке т.е. child, как указано в документации
        wrapperBlock.remove();

        if( $( $addressSearchInputClass ).length == 0 ){
            addNewSeachField();
        }

    });


Думал может быть при добавлении адреса и полей, сохранять ссылки в jquery массив.
Но, либо я что то делаю не так, или не понятно. При попытке вытащить из этого массива элемент, он мне возвращает [object Object]
Помогите пжл, я в тупике.

1 комментарий
Чтобы удалить метку, надо иметь на неё ссылку. Ссылку вы можете "привязать" к DOM элементу при создании метки/элемента, при навешивании на него события.
Так же есть вариант искать в обработчике метку с нужный уникальным id.
Нужно знание JS на уровне понимания как работают замыкания и как передаются ссылки на объекты