Клуб API Карт

[РЕШЕНО] Ссылки и ballon - фильтрация объектов

htmllancer
2 августа 2010, 12:24

Доброго всем.
Суть проблемы - у меня отдельным скриптом (не js) строится список объектов. Вторым скриптом строяться метки этих объектов на карте. При клике на метку на карте - у меня все нормально открывается ballon и выделяется указанный объект по id. А вот как сделать обратное мне не понять.

При загрузку страницы у меня есть уже все объекты и все их метки на карте. При клике на объект мне надо открыть принадлежащий ему ballon не скрывая всех. Поступить как в примере с "вокзалами" не могу.

 

Решение

Иногда возникает необходимость
обратиться к объекту ballon соверешенно из другого места, и по некоторым
причинам не возможно / не хочется возиться с оверлеями. Выход из данной
ситуации, такой - при создании карты с метками, группируем их и даем
каждой метке уникальный id. А потом из любого места на страницы мы можем
обратиться к нужной нам метке по id - и вызвать ballon (фильтрация)

 

код карты:

         var group;

        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {
            // Создание экземпляра карты и его привязка к созданному контейнеру
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 6);
            map.enableScrollZoom();

            // Группа объектов
            group = new YMaps.GeoObjectCollection();
            map.addOverlay(group);

            // Добавление объектов
            var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37, 55));
            placemark.id = 1;
            group.add(placemark);

            var placemark2 = new YMaps.Placemark(new YMaps.GeoPoint(36, 54));
            placemark2.id = 2;
            group.add(placemark2);
        })

Код фильтрации и вызова ballon:

        function openPlacemarkById (id) {
            var filterObjects = group.filter(function (obj) {
                return obj.id == id;
            });

            filterObjects[0].openBalloon();

            return false;
        }

Ну и совсвенно код ссылки:

<a href="#"onclick="return openPlacemarkById(1)">1</a>


За помощь спасибо   - собственно он и автор этого всего )))

 

1 комментарий
Подписаться на комментарии к посту
Могу посоветовать посмотреть пример:
http://api.yandex.ru/maps/jsapi/examples/overlaycustom.html

В нем работа идет с собственными оверлеями, в вашем же случае - нужно работать с метками. Принцип один и тот же.