Клуб API Карт

балун с надписью от щелчку по ярлычку..

Joshuan
15 февраля 2009, 22:50

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

Как сделать что бы при нажатие на цветной значок открывался баллун как здеть , но в нём содержалась надпись как тут, + надпись должна ссылаться, т.е. было html'ом...

Не могу найти куда вписать текст балуна...

14 комментариев
Подписаться на комментарии к посту
Ставить нужно не баллун а оверлей. Примерно так: var placemark=new YMaps.Placemark(new YMaps.GeoPoint(43.98724,56.310867)); placemark.setIconContent('Что будет на значке'); map.addOverlay(placemark); placemark.openBalloon('Что будет при открытие И сцылка'); Работает вот так http://vgs.nnov.ru/contact.html
Блин, попутал слегка, так будет сразу открытый оверлей. Чтобы был закрытый используй var placemark=new YMaps.Placemark(new YMaps.GeoPoint(43.98724,56.310867)); placemark.setIconContent('Что будет на значке'); placemark.setBalloonContent('Что будет при открытие'); map.addOverlay(placemark);
Спасибо большое :) Вот именно это мне и нужно было ! :)
а есть ли вариант синтаксиса вызова оверлея одной строкой? типа map.addOverlay(new YMaps.Placemark(new YMaps.GeoPoint(43.98724,56.310867)) и тут же параметр настраивающий setBalloonContent('Что будет при открытие'));
Скорее всего нет, ибо зачем?
вот с такой конструкцией вожусь ........... placemark=new YMaps.Placemark(new YMaps.GeoPoint(34.09711, 49.58119)); placemark.setBalloonContent('97 - ограничение: 60 '); map.addOverlay(placemark); placemark=new YMaps.Placemark(new YMaps.GeoPoint(34.09711, 49.58119)); placemark.setBalloonContent('98 - ограничение: 60 '); map.addOverlay(placemark); ........ но выводит только последнюю метку в списке
Попробуй перед placemark ставить var var placemark=... либо сделать функцию типа function addMyOverley(x,y, text){ var placemark=new YMaps.Placemark(new YMaps.GeoPoint(x, y)); placemark.setBalloonContent(text); map.addOverlay(placemark); } а дальше вызавать ее, addMyOverley(34.09711, 49.58119, '97 - ограничение: 60 '); addMyOverley(34.09711, 49.58119, '98 - ограничение: 60 '); addMyOverley(34.09711, 49.58119, '97 - ограничение: 60 '); если много оверлеев, то так и кода меньше получится и т.д.
Так и должно быть. Вы переписали значение placemark при повторном вызове конструктора YMaps.Placemark() и placemark стал ссылаться на последнюю созданную метку. Чтобы такого не происходило сделайте следующим образом: var placemark = new YMaps.Placemark(new YMaps.GeoPoint(34.09711, 49.58119)); placemark.setBalloonContent('97 - ограничение: 60 '); map.addOverlay(placemark); var placemark2 = new YMaps.Placemark(new YMaps.GeoPoint(34.09711, 49.58119)); placemark2.setBalloonContent('98 - ограничение: 60 '); map.addOverlay(placemark2);
значит метод Реально Андрея с функцией не подходит - переменная перезаписыватся все время последним значением (
разве что это обыграть через массив и цикл
Слышал про замыкание в js? Почитай на эту тему, думаю, что поможет.
таки да....ух шайтаны придумали JS
function show(url){ return (function() {map.addOverlay(url);}); } ; function addMyOverley(x,y, text){ var placemark=new YMaps.Placemark(new YMaps.GeoPoint(x, y)); placemark.setBalloonContent(text); show(placemark); }; addMyOverley(34.09701, 49.58110, '1 - ограничение: 50'); addMyOverley(34.09701, 49.58110, '2 - ограничение: 40'); addMyOverley(34.09701, 49.58110, '3 - ограничение: 60'); ............. не сработало...куда носом тыкаться?
победила конструкция вида function show(url){ map.addOverlay(url);}; function admy(x,y, t1){ placemark=new YMaps.Placemark(new YMaps.GeoPoint(x, y)); placemark.setBalloonContent(t1); show(placemark); }; admy(34.097017,49.581100,'1 : ограничение 50 км/ч '); admy(34.463014,48.953423,'2 : ограничение 40 км/ч '); admy(34.912467,48.544850,'3 : ограничение 60 км/ч '); .............. Всем спасибо :)