Клуб API Карт

Как выбрать все метки в ObjectManager по определенному признаку

ngs-leto
31 мая 2015, 09:27

В OM объекты с параметром grpid

{
  "geometry": {

     "type": "Point",

     "coordinates": [***,***]   },
  "id": "111",
  "grpid": "123"

}

Как например удалить все метки с "grpid = 123"? Можно ли это сделать без циклов/пробегов, хотелось бы как то так:
objectManager.objects.remove( objectManager.objects.search('grpid = 123') ) - но так не получается...

Подскажите пожалуйста?

10 комментариев
Подписаться на комментарии к посту

Дак не получается пробовал уже
objectManager.setFilter('grpid == "'+GrID+'"') - консоль пишет grpid is not defined

Видимо в этом дело...

В строке-фильтре доступны следующие ключевые слова:

  • options - обращение к опциям объекта;
  • properties - обращение к данным объекта;
  • geometry - обращение к геометрии объекта;
  • id - обращение к идентификатору объекта;

Решил пойти простым путем и переместил grpid  в options- всё работает... Спасибо!

 

Решил пойти простым путем и переместил grpid  в options- всё работает... Спасибо!

 

 

Лучше использовать properties вместо options

 

  • properties - обращение к данным объекта;

 

 

И все таки это не совсем то...
Мне нужно удалять объект а не прятать его.  Пробую так но не работает:

objectManager.setFilter(function (object) {
    if (object.properties.grpid == GrID){ objectManager.objects.remove([object.id]); }
    return object.properties.grpid != GrID;

});

 

При первом запуске прячутся объекты и всё вроде бы ок, но повторный запуск по другой группе объектов прячет их а предидущие спрятанные возвращает...

В фильтрах объекты не удаляют, это все равно, что сук под собой пилить.

 

Для чего вам нужно удалять?

Сколько всего у вас объектов выводится на карту?

В фильтрах объекты не удаляют, это все равно, что сук под собой пилить. - да тоже так кодумал - но уже пробую всё даже бредовое... Вы предложили - попробовал вытянуть максимум из вами предложенного)

 

Для чего вам нужно удалять?

Если коротко то - каждый объект входит в группу, при удалении пользователем одного объекта - должны удалиться все объекты входящие в гргуппу удаляемого объекта. както так)

Сколько всего у вас объектов выводится на карту?

Зависит от города и фильтра - в среднем 3000-7000

Зачем их удалять из ОМ? Почему не достаточно скрыть с карты?

А Как? через setFilter - не подходит:
При первом запуске прячутся объекты и всё вроде бы ок, но повторный запуск по другой группе объектов прячет их а предидущие спрятанные возвращает...

А мне нужно чтобы все объекты группы прятались/удалялись безвозвратно.

Хм... Что то я не подумал, что можно строку фильтрации хранить в переменной и с каждым удалением группы добавлять в неё условие.

LOM_fltrstr += (LOM_fltrstr?" && ":"") + 'properties.grpid != "' + banGrID + '"';
 objectManager.setFilter(LOM_fltrstr);

o_O

Вполне сойдет, если более подходящего решения нет...

Сотый раз - ОГРОМНОЕ ВАМ СПАСИБО ЗА ПОМОЩЬ!!!