Клуб API Карт

Не работает клик

neondozor
5 октября 2010, 20:17

Не работает почему-то обработка клика на метку.

В чём может быть проблема?

echo '
var '.$hurl.' = new YMaps.Geocoder("'.$addr.'");
'.$hurl.'.setStyle("default#orangePoint");
YMaps.Events.observe('.$hurl.', '.$hurl.'.Events.Load, function ('.$hurl.') {

'.$hurl.'.get(0).setIconContent("'.$name.'");
})

map.addOverlay('.$hurl.');

YMaps.Events.observe('.$hurl.', '.$hurl.'.Events.Click, function () {
  window.location.href="www.site.ru/'.$hurl.'";
  alert("1");
});

Данный код без проблем выполняется:

YMaps.Events.observe(map, map.Events.Click, function () {
alert("Щелк!");
});
5 комментариев
Подписаться на комментарии к посту
В документации к геокодеру
(ссылку привел Саша в Вашем предыдущем посте)
написано:

В классе  YMaps.Geocoder предусмотрено  два     события: Load (геокодирование прошло без ошибок) и  Fault (с ошибками).

Прочитайте внимательно

Поместил обработку клика в событие Load - метки как и прежде появляются, но клик не обрабатывается.


Как решить проблему?

 Из того же поста

2. Геокодер - это группа объектов, поэтому вначале нужно выбрать какой-то объект, а потом производить с ним манипуляции.

Вам нужно в обработчике события Load геокодера перебрать элементы этой группы и вешать обработчик кликов на них
 Спасибо. Вот так всё заработало.
var '.$hurl.' = new YMaps.Geocoder("'.$addr.'");
'.$hurl.'.setStyle("default#orangePoint");
YMaps.Events.observe('.$hurl.', '.$hurl.'.Events.Load, function ('.$hurl.') {

'.$hurl.'.get(0).setIconContent("'.$name.'");

map.addOverlay('.$hurl.'); 

YMaps.Events.observe('.$hurl.'.get(0), '.$hurl.'.get(0).Events.Click, function () {
alert("Щелк!"); 
window.location.href="www.vburo.ru/'.$hurl.'";
alert("1");
}); 
});

 


Такой вопрос напоследок: есть ли в YaAPI ограничение на длину переменных?

Нет, апи не накладывает ограничений на длину переменных.

Но я так понимаю, что вы имеете ввиду длину строки get-параметров. Для разных браузеров имеются свои ограничения, например, для IE6 она может быть до 2048 симоволов.