Задача заключается в изменении цвета метки после выделения в многоугольнике и изменения определенного параметра в бд. Сделать это через изменение пресета не получается, так как после этого данные метки и балуна ломаются.
Я остановился на идее удаления и добавления выделенных балунов после запроса к базе, но это срабатывает только один раз, после метки уже не удаляются, а только добавляются. Как я понимаю, это происходит из-за уникальности объекта, но как мне ее обойти стороной?
myPolygon.events.add('click', function (e) { var objectsInsidePolygon = ymaps.geoQuery(myMap.geoObjects).searchInside(myPolygon); var orders_string = ''; for (i = 0; i < objectsInsidePolygon._Ol.length; i++) { orders_string += objectsInsidePolygon._Ol[i]['_oh']['_Jh']['_K'].id; orders_string += ','; } orders_string = orders_string.slice(0,-1); showDriversOrderList(orders_string, markLink, markLink2, objectsInsidePolygon, orders_string, myMap); }); //... function showDriversOrderList(order_list, markLink, markLink2, objectsInsidePolygon, myMap) { for (i = 0; i < orders_array.length; i++) { $('#tr_order_'+orders_array[i]).addClass('driver_glow'); } for (i = 0; i < objectsInsidePolygon._Ol.length; i++) { for (x = 0; x < orders_array.length; x++) { if (objectsInsidePolygon._Ol[i]['_oh']['_Jh']['_K'].id == orders_array[x]) { markLink.remove(objectsInsidePolygon._Ol[i]); markLink2.remove(objectsInsidePolygon._Ol[i]); myMap.geoObjects.remove(objectsInsidePolygon._Ol[i]['_oh']['_Jh']['_K']); markLink.remove(objectsInsidePolygon._Ol[i]['_oh']['_Jh']['_K']); markLink2.remove(objectsInsidePolygon._Ol[i]['_oh']['_Jh']['_K']); markLink.remove(objectsInsidePolygon); markLink2.remove(objectsInsidePolygon); //Никакой способ из вышеприведенных не срабатывает как нужно } } } ymaps.geoXml.load('export.php?orders='+orders_array.filter(onlyUnique)+'&d=<?=date('Y-m-d:h:i:s')?>') .then(function (res) { markLink2.add(res.geoObjects); }); }
markLink1 = res.geoObjects; // первая половина меток
markLink2 = res.geoObjects; // вторая половина меток