Продолжаем перечислять выявленные баги в API 2.0. Благо теперь клуб не в режиме R/O работает.
Итак: имеем все теже 100500 маркеров Placemark обозначающие объекты разного типа и каждый со своим ID.
Исторически сложилость, что проще и быстрее было работать с ними используя массивы объектов Placemark, т.е. работать с ними по принципу markers[id] = new Placemark(...);
Однако с ростом их кол-ва на карте возникла необходимость увеличить производительность фильтра отображения маркеров по их типу, т.е. управлять группами маркеров на основе их типа.
Выбор пал на GeoObjectArray ибо в моем случае все объекты обязательно имели свой ID (натуральные числа, но вовсе не обязательно последовательные, т.е. 2,5,17,99,1023 и т.д.) и в коде достаточно много отсылок к работе именно через эти ID объектов.
Отдельно порадовал дополнительный параметр index при добавлениии в группу add(child, index), т.к. для последующих обращений мне нужно чтобы индекс маркера в группе был именно мой, а не последовательный от 0 по умолчанию.
Заполнив GeoObjectArray маркерами с моими индексами приступаем к работе с ними через GeoObjectArray.get(index) и обнаруживаем, что таких объектов НЕТ в группе! Как? Убиваем еще неск.часов на поиск прочих возможных ошибок в коде, в итоге сведя все к использованию числовых констант вместо переменных и все равно get(index) уверенно возвращает null, т.е. 2й параметр в методе add(child, index) явно игнорируется. В итоге пришлось вернуться к "классике" работы с массивами...
Просьба исправить этот баг, а также небольшой фичреквест на будущее:
Фичреквест: Предусмотрите более гибкие группы объектов, которые позволяют один и тот же элемент включать в несколько групп на основе разных независимых атрибутов объектов.