Клуб API Карт

после клика по метке выделить пункт списка меню

dmitrij.roganov
15 мая 2012, 18:54

Добрый день.

Подскажите пожалуйста, как сделать так, чтобы после клика по метке выделялся пункт меню(адрес)?

Вот сайт, после клика надо выделить пункт левого меню, раскрывающейся список.

 

     function allPoint(id){
      if(!id){
       var id = $('.list-city').find('a:first').attr('href');
     }
       $.ajax({
        url : 'action.php',
        type : 'post',
        data : {act : 'view-point','id_city' : id},
        dataType : 'json',
        beforeSend : function(){
        
        },
        success : function(result){
          if(result.type == 'error'){
           var error = ''
           error += '<div class="diverr">'
            $(result.err).each(function(){
             error += $(this).attr('err');
            })
           error += '<\/div>';
           $("#mapBlock").prepend(error)
           $(".diverr").fadeOut(8000)
          }
          else{
          var list = '';
            var collection = new ymaps.GeoObjectCollection(
            $(result.info).each(function(){
             list += '<div class="point-city">';
             list += '<a class="arrow" href="' + $(this).attr('id_group') + '">' + $(this).attr('name_group') + '<\/a>';
             list += '<div class="point-address">';
              for(var i = 0, len = $(this).attr('point').length; i < len; i++) {
               var Latitude = $(this).attr('point')[i].latitude;
               var Longitude = $(this).attr('point')[i].longitude;
               var namePoint = $(this).attr('point')[i].name;
             list += '<p>';
             list += '<a class="address" lat='+ Latitude + ' log='+ Longitude +'>' + namePoint + '<\/a>';
             list += '<\/p>';
                Placemark = new ymaps.Placemark([Latitude, Longitude],
                {
                      hintContent : namePoint
                },
                {
                  iconImageHref: '/coffee/admblock/img/zerno-for-map.png', // картинка иконки
                  iconImageSize: [30, 21], // размеры картинки
                  iconImageOffset: [-15, -5] ,// смещение картинки
                })
                collection.add(Placemark);
              }/* end for */
             list += '<\/div>';
             list += '<\/div>';
            })/* end each */
            myMap.geoObjects.add(collection);
            $('.jspPane').empty()
            $('.jspPane').prepend(list)
            
                Placemark.events.add('click', function (e) {
                 var coords = e.get('coordPosition');
                 alert(coords[0].toPrecision(8) + coords[1].toPrecision(8))
                })
            
          }    
        }
       })
    }

 

p.s. метки получаю из базы, пробовал сделать так, как Вы написали, ни чего не получилось.
Надо метку привязать к определённому пункту меню...
Добавил полный код вывода меток на карту....

 

p.s.s

сделал

placemark.events.add('click', function (e) {

  var coords = e.get('coordPosition');
  alert(coords[0].toPrecision(8) + coords[1].toPrecision(8))

});

alert не срабатывает

сделал

collection.events.add('click', function (e) {

  var coords = e.get('coordPosition');
  alert(coords[0].toPrecision(8) + coords[1].toPrecision(8))

});

alert срабатывает, но на этом и тормознулся...

5 комментариев
Подписаться на комментарии к посту

placemark.events.add('click', function (e) {

   // тут код выделяющий ваш пункт меню

});

ну прояви смекалку,

при генерации пунктов меню и меток впиши в каждый пункт идентификатор

 

list += '' + namePoint + '';

и метке при создании в поле properties (второй параметр) впиши его же

 

Placemark = new ymaps.Placemark([Latitude, Longitude],
                {
                      hintContent : namePoint,
                      oid : 'oid' + String(Latitude) + String(Longitude)
                },


и потом при клике ты можешь получить эти поля

collection.events.add('click', function (e) {

  var pl = e.get('target');
  $('#' + pl.properties.get('oid')).css('color', 'red'); // тут твой пункт меню, делай с ним что хочешь

});

dmitrij.roganov
16 мая 2012, 02:31

благодарю за помощь.

но этот участок кода начал работать нормально после того как переписал с

$('#' + pl.properties.get('oid')).css('color', 'red');

на

$('a[id="' + pl.properties.get('oid') + '"]').css('color', 'red');

странно первый вариант тоже должен работать

dmitrij.roganov
16 мая 2012, 17:01

Должен работать, сам так делал , но в этот раз не захотел работать... ))))