Здравствуйте.
Передо мной стоит такая задача: через YMapsML загружается массив точек (порядка 200-300) в специальном оформлении (шаблоны значка, балуна), который нужно вывести с разбиением на группы по 10 точек с навигацией по группам. Структура XML-файла такова, что стиль назначается не каждой точке в отдельности, а всей группе ymaps:GeoObjectCollection целиком.
Сейчас я делаю так: при успешной загрузке данных из YMapsML все точки, содержащиеся в нем, простым копированием помещаются в специальный массив. При выводе заданной группы выполняются следующие действия:
1. на карту добавляется слой, содержащий в себе YMaps.ObjectManager (если он
не был еще добавлен, в противном случае имеющийся слой очищается);
2. определяется начальный и конечный индекс точек в массиве;
3. попавшие в требуемый диапазон объекты добавляются в YMaps.ObjectManager, а их описание дополнительно выводится на странице в виде простого списка;
При клике на описание точки в списке, на карте должен открываться соответствующий балун. Одно из основных назначений ObjectManager-а в том, чтобы скрывать точки, не попавшие в текущую область видимости, поэтому когда я пытаюсь программно открыть балун у таких точек, на карте ничего не происходит. В качестве решения проблемы я пробовал использовать YMaps.GeoObjectCollection, но выяснилось, что при добавлении в него объектов их стили не применяются, в результате чего на карте появляются дефолтные синие маркеры.
Сейчас я вижу только одно решение: используя ObjectManager, перед открытием балуна передвигать центр карты в нужные координаты, чтобы ObjectManager отобразил требуемую точку. Так делать не хочется, потому что балун достаточно велик (относительно размера карты), и при его открытии карта сдвигается, чтобы полностью уместить его в видимой области. То есть, визуально будет два движения: позиционирование по центру точки и последующее позиционирование по центру открывшегося балуна.
Есть ли какое-либо другое решение?