Клуб API Карт

Подскажите как ...

neeoon
30 марта 2009, 14:46

 

обратиться к содержимому открытого балуна?

и как лучше сделать:

есть 'несколько' меток (~1000) с названиями и описаниями (placemark.name, placemark.description), объедененые в слои (ObjectLayer) и вот когда открыт балун в нем могут быть несколько ХТМЛ объектов (так сказать 'стандартный набор' миникартинка и название), при нажатии на один из них контент балуна надо менять, тоесть добавлять полное описание объекта + оставлять стандартный набор балуна,

и второй вариант это сразу в контент балуна выводить все полные описания ХТМЛ объектов (ну и сразу их прятать, а при нажатии отображать нужный) + стандартный набор


и еще такое заметил, когда происходит зум от кАлесика мышки появляються все спрятаные слои с метками

8 комментариев
Подписаться на комментарии к посту
Создайте слушатель события BalloonOpen. Например, в следующем примере я при открытии балуна добавляю "description" к содержимому балуна. var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37.64, 55.76)); placemark.setBalloonContent('name'); YMaps.Events.observe(placemark, placemark.Events.BalloonOpen, function (obj) { var content = obj.getBalloonContent().innerHTML + '
description'; obj.setBalloonContent(content); }); map.addOverlay(placemark); Вам помог этот пример?
мне надо было менять содержимое балуна по нажатии например на ссылку внутри открытого балуна, а не при открытии балуна, я сделал так, при открытии балуна я obj скидываю в глобальную переменую и соответственно по нажатию на ссылку внутри балуна я имею доступ к балуну через эту глобальную переменую, это как раз то что и надо было, так что всеравно спасибо :)
А как вы прячете слои? Вообще, вместо ObjectLayer лучше используйте GeoObjectCollection. Реализация ObjectLayer получилась неудачной, и мы планируем отказаться от нее в следующих версиях.
myLayer[myLayerID] = new YMaps.ObjectLayer(); - создаю слой myLayer[myLayerID].add(arrPoints); - добавляю масив плейсмарков (с дексрипшионами) myLayer[myLayerID].setVisible(false); прячу слой map.addLayer(myLayer[myLayerID]); добавляю слои на карту а как управлять слоями в GeoObjectCollection?
делайте так: вместо слоя создаем коллекцию myLayer[myLayerID] = new YMaps.GeoObjectCollection(); - создаю слой метки добавляются также myLayer[myLayerID].add(arrPoints); - добавляю масив плейсмарков (с дексрипшионами) добавляем коллекцию на карту, если нужно показать map.addOverlay(myLayer[myLayerID]); добавляю слои на карту если нужно скрыть удаляем коллекцию с карты map.removeOverlay(myLayer[myLayerID]);
спасибо, все работает P.S. подскажите как в цикле обойти массив не зная ключей или ключи не попорядку, например массив arr[2] arr[5] arr[7] или arr['rel'] arr['name']
for (var prop in arr) { alert("arr[" + prop + "]:" + arr[prop]); }
я так тоже дедал, но в опере и ИЕ оно еще и свякие функции выдает, нормально только в ФФ, но вот как только спросил то понял что надо есчо проверку делать if (typeof arr[prop] != 'function') вот тогда все хорошо Спасиба.