Клуб API Карт

Заменить стандартный балун в результатах поиска

hectata
1 февраля 2011, 03:21

На карте реализованна функция поиска

map.addControl(new YMaps.SearchControl());

Хотелось бы, чтобы после завершения поиска при нажатии, в данном случае, на результат "Ленинский проспект, 13"

вместо стандартного балуна появлялся балун следующего вида:

YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
                var myHtml = "Значение: " + mEvent.getGeoPoint() + "<br>"+'<form id="formadd" name="formadd_point" method="post" action="outpoint2.php"><p>Название: <input name="namepoint" type="text" size="20" maxlength="80" /></p><p>Описание: <textarea name="descriptpoint" cols="20" rows="5"></textarea></p><p>Иконка: <select name="user" size="1"></select></p><input name="pcoord" type="hidden" value="'+mEvent.getGeoPoint()+'" /><p><input name="subpoint" type="submit" value="Добавить" /></p></form>';
                map.openBalloon(mEvent.getGeoPoint(), myHtml);
});

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

3 комментария
Подписаться на комментарии к посту
http://api.yandex.ru/maps/jsapi/doc/ref/reference/map.xml#openBalloon

 

content HTMLElement|String     Содержимое балуна (может быть как текстом, так и указателем на HTML-элемент).


Полагаю, что для того чтобы вы смогли получить то что надо вам вместо строкового представления нужно передать туда HTMLElement... например так
 
YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
var div = YMaps.jQuery("Значение: " + mEvent.getGeoPoint() + "
"+'

Название:

Описание:

Иконка:

');
map.openBalloon(mEvent.getGeoPoint(), div);
);
}

У SearchControl есть событие Select, вторым параметром в которое приходит ссылка на найденный объект. Вы можете отключить показ дефолтного балуна (выставить при создании контрола флаг noPlacemark):

var searchControl = new YMaps.SearchControl({ noPlacemark: true });

И показывать свой кастомный балун при выборе объекта в панели:

YMaps.Events.observe(searchControl, searchControl.Events.Select, function (control, result) {
  map.openBalloon(result.getCoordPoint(), 'Мой текст в балуне');
});
А в чем проблема?
Т.е. что-то не выходит? Судя по всему код правильный. Только лень правильность кавычек проверять.

И в подобных случаях рекомендуется давать ссылку на страницу с примером  и краткое пояснение в стиле "хотели сделать то и то, а вышло совсем другое"

Так больше шансов что вам помогут ;)