Клуб API Карт

Динамическая загрузка и удаление объектов на карте

web-model.ru
19 июля 2011, 14:24




Пожалуйста, помогите мне для начала определиться с подходом
к задаче, а то даже не ясно, с чего начать.

Мне нужно сделать карту, объекты на которой автоматически и
без перезагрузки страницы обновляются в зависимости от значений, выбранных в
форме рядом с картой (при изменении данных в поле формы в базу данных MySQL автоматически
идёт запрос с новыми критериями поиска и отбираются новые объекты для
отображения на карте.)

Я получаю данные из БД, но не знаю, как их использовать т.к.
обычный приём, которым  я пользовался
(замена innerHTML определенного ‘ответного’ DIV на код, полученный от
php-скрпта) здесь как будто не работает ввиду того, что координаты меток
задаются в теге HEAD, поменять который после загрузки страницы (лично мне) не
представляется возможным. (Это даже если допустить, что документ стал бы
отслеживать эти изменения).

 

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

Присваивавать всем объектам уникальные имена. У меня они - элементы массива. К примеру массив маркеров marker.

Потом обращаемся к нужному и меняем что-то. К примеру marker[42].setBalloonContent('новое значение балуна')

Andrey.Cjkjvfnby
20 июля 2011, 11:55
YMaps.jQuery.post('url', saveDict, function(json) { //js code } )

Отправляете AJAX запрос на сервер, получаете ответ, выполняете свой джаваскрипт.


Андрей, лучьше использовать геоколлекции.

У меня сейчас такая проблема: не могу управлять метками после их загрузки.

Они загружаются вместе со страницей ( через YMaps.jQuery(function () {...} или window.onload = function () {...}  )

Не знаю, как правильно, но я придумал такую схему:

1. Карта и метки загружаются при загрузке стр. (описано выше)/

Метки ставятся через YMapsML
, описываются xml-файлом.

  var ml = new YMaps.YMapsML('http://www.url.ru/3/xml3.xml');
            map.addOverlay(ml);

2. Пользователь что-то меняет в форме, через php идет запрос в MySQL, php обрабатывает результат и создает xml-файл с описанием новых меток.

3. Функция JS, отправлявшая запрос в п.2, после выполнения запроса запускает функцию, которая: 1) удаляет с карты объект  
ml ( map.removeOverlay(ml);  )  а потом создает этот же объект с новыми метками (код точно как в п.1)

На бумаге красиво, а в реальности не получается.