Как изменить свойства перетаскиваемой метки API v3 Яндекс карты

Есть несколько маркеров, как мне изменить свойство именно перетягиваемого маркера, а не последнего созданного? То есть как обратиться к нему?


Ответы (2 шт):

Автор решения: Solt

навешиваем событие окончании перетаскивания на все геообъекты:

myMap.geoObjects.events.add('dragend',obj_moved);

, в обработчике отлавливаем перетаскиваемый объект:

function obj_moved(e){
    logg(e); //Внимательно изучаем событие и ищем всё, что может понадобиться

    //Перетаскиваемый объект
    var object=e._sourceEvent._sourceEvent.originalEvent.target;
    //Координаты
    var coords = object.geometry._coordinates;
    //Если у объектов есть id, можно достать
    var objectId = object.properties._data?.id;
    
    //Делаем с ним что захочется, например скрываем
    <коллекция>.setObjectProperties(objectId, {disp:'none'});
}

<коллекция> - это тот объект, который прикрепляли к карте методом myMap.geoObjects.add(<коллекция>);

→ Ссылка
Автор решения: Евгений

Возможно есть другое решение, но сделал так

        map = new YMap(
            document.getElementById('map'),{
                location: {
                    ...
                },  
            }
        );
        const collection = new YMapCollection({});
        $.each(markers, function(key, item) { // markers массив с маркерами
            element = //... html разметка маркера ...
            marker = new YMapMarker(
                {
                    coordinates: [longitude, latitude],
                    ...,
                   onDragMove: onDragMoveHandle,  // функция отслеживания перемещение маркера
                },
                properties: {
                    key: key  // добавил свойство для маркеров, индекс массива
                    }
                },
                element
            );
            collection.addChild(marker);
        });
        map.addChild(collection);

Сама функция

function onDragMoveHandler(coordinates) {
    var key = this.properties.key; // получаю наш индекс 
    map.children[xxx].children[key].update({
       // меняем нужный параметр
    })
}

Вместо xxx вставляем нужный индекс глобальной переменной map

→ Ссылка