Клуб API Карт

YMaps.YMapsML - как вызвать ф-ю при клике на метку ?

Пост в архиве.

Добрый день !

Всех с праздником !!!

У меня на карту добавляются метки:

            var ml = new YMaps.YMapsML("http://...");
            map.addOverlay(ml);

У меток есть metaDataProperty. Как мне сделать так, чтобы при клике на метку вызывалась ф-я с metaDataProperty этой метки ? Надо их как-то "выцепить" перебирая в цикле чтоли ... Т.е. необходимо, чтобы открылся нужный мне балун и сработала моя ф-я.

Большое спасибо.

С уважением, Сергей.

5 комментариев

Обработчик на клик нужно вешать самостоятельно после загрузки  YMapsML.

Я понимаю, что это надо сделать самостоятельно. Я просто не знаю "как" это сделать :)

Нашел пример с ml.filter, где ищутся только метки. Но как на них обработчик вешать ? И при добавлении меток таким методом теряются стили, которые прописаны в исходном файле.

YMaps.Events.observe(ml, ml.Events.Load, function (ml) {
    ml.filter(function (item) {
      if (item instanceof YMaps.Placemark) {
            map.addOverlay(item);
        }
    });
});

Буду очень признателен за помощь.

С уважением, Сергей.

Обработчик вешать так-же как и обычный обработчик на метку. Посмотрите примеры в документации.

YMaps.Events.observe(item,  item.Events.Click, function(item) {alert('Done')})

Добавлять метки таким путем не надо, делайте map.addOverlay(ml);

Андрей, спасибо Вам большое !

Как всегда истина рядом, я просто, признаться, синтаксис не очень хорошо знаю.

Если можно - у меня есть еще пара вопросов:)

1. Как отцентровать карту по "средним координатам" ? Т.е. есть, к примеру, у меня n-меток. Как мне сделать map.setCenter чтобы видеть как можно большее кол-во меток ?

2. Как программно нажать на маркер ?

Еще раз спасибо Вам.

С уважением, Сергей.

1. Ищите методы setBounds - getBounds

2. Event.notify