Клуб API Карт

Получение всех объектов из YMaps.Map

andrew.djoga
13 июля 2011, 09:41

Добрый День,

 

Сам вопрос: Каким образом можно получить все объекты (или определенных примитивов) из действующей карты? 

Цель: Сериализовать и отправить на сервер для сохранения после манипуляции.

 

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

С карты объекты получить нельзя.

Можно получить объекты из группы.

Предварительно их надо сгруппировать

Спасибо за ответ, однако вопрос о реализации у меня остается открытым.

 

Карту собрался загружать с помощью YMapsML. Могу предварительно группировать все объекты в данную структуру. Как мне тогда получить этот объект группировки YMaps.GeoObjectCollection из загруженной карты? 

вы его и так получите

YMapsML сериализуется в группу

см. наследуемые методы

http://api.yandex.ru/maps/jsapi/doc/ref/reference/ymapsml.xml

Да, вы правы. Спасибо за наводку!

 

Можете также дать best practices по сохранению объектов на карте? Просто получить все объекты с карты, отправить их через json и на сервере создать соответствующий xml? 

всё конечно зависит от того какие объекты и какие изменения надо сохранять.

и вообще от логики работы вашего вэб-приложения

 

Могу дать общие рекомендации:

1. Добавляйте всем геообъектам в YMapsML атрибут gml:id 

после сериализации YMapsML-я он будет виден у объекта как поле id

при отравке изменений на сервер, прикладывайте его чтобы идентифицировать тот объект, который надо изменить

2. Сохраняйте только то что изменилось. При каждом изменении сохранять всё - слишком жестоко для пользователя.

3. При получении YMapsML в обработчике события Load навешивайте нужные обработчики на события для соответствующих геообъектов (для меток одни, для полилиний - другие)

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

 

как-то так

если будут вопросы - смело задавайте

 

Спасибо за советы!

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

На карту загружены точки с помощью YMapsML. На них вист обработчики событий. Если мне надо удалить точку, как ее убрать с карты? map.removeOverlay(point) кажется не работает в этом случае.