Клуб API Карт

Как подгружать только те метки, что находятся в видимой области ? А невидимые удалить.

svch04
5 марта 2010, 01:08

Доброй ночи, уважаемые гуру !

Вот каким вопросом я задался:

Есть много-много точек для показа на карте.

- как при открытии карты подгрузить и показать только те, что находятся в видимой зоне ?

я так понимаю, что надо сюда передать параметры с координатами

            var ml = new YMaps.YMapsML( 'http://страница_с_метками?map1=...&map2=...' );
            map.addOverlay(ml);

- но вот человек переместился по карте, и мне надо удалить старые метки и показать новые. Как ?

т.е. надо отловить событие перемещения и там что-то прописать.

- и последнее. Как при клике на метку показать html-контент с id этой метки ? Т.е. http://страница_с_контентом?id=...

Буду очень признателен.

Большое спасибо.


С уважением, Сергей.

2 комментария
Подписаться на комментарии к посту
Для отсечения невидимых маркеров можно использовать марерManager
как подгрузить только что нужно - я об этом немного рассказал
А вот с последним не помогу, не люблю и не умею YMapsML
Для отображения меток только в видимой области карты воспользуйтесь YMaps.ObjectManager:
http://api.yandex.ru/maps/jsapi/doc/dg/concepts/objects_manager.xml

Однако он лишь скрывает метки вне видимой области карты (не удаляет), поэтому если необходимо отображать значительное количество меток придется самостоятельно контролировать добавление/удаление меток.

По поводу открытия балуна у нужной метки.
Необходимо взять значение id из URL'а. Пример обработки и создания ссылки на JavaScript можно найти в этой статье: http://ymapsapi.ya.ru/replies.xml?item_no=8
Далее искать по этому id нужный объект. Например, если объекты у вас находятся в группе, то сделать это можно с помощью метода filter():
http://api.yandex.ru/maps/jsapi/doc/dg/concepts/ymapsml.xml