Координаты по data атрибутам. Яндекс карты

375
09 июня 2017, 10:58

Здравствуйте! Есть несколько блоков с дата атрибутами:

<a class="main-centers__link" data-coord="[55.119646, 61.625318]">
<a class="main-centers__link" data-coord="[55.244650, 61.375281]">

С помощью js делаю поиск и по дата атрибутам проставляю точки (дополнительно еще по клику переход к точке, добавление другой инфу в нужный блок)

var Placemark = {};
ymaps.ready(function() {
    var activeItem = $('.main-centers__link_active').attr('data-coord');
    activeItem = JSON.parse(activeItem);
    var myMap = new ymaps.Map('map-centers', {
        center: activeItem,
        zoom: 17,
        controls: ['zoomControl']
    }, {
        suppressMapOpenBlock: true,
    });
    console.log('3');
    myMap.behaviors.disable('scrollZoom');
    $('.main-centers__link').each(function() {
        var obj = $(this).attr("data-coord");
        obj = JSON.parse(obj);
            myMap.geoObjects
              .add(new ymaps.Placemark(obj, { 
                iconCaption: ''
              }, {
                iconLayout: 'default#imageWithContent',
                iconImageHref: '../img/geo-mark.png',
                iconImageSize: [29, 43],
                iconImageOffset: [-29, -43]
              }));
    }); //each
    $('.main-centers__link').click(function() {
        var objj = $(this).attr('data-coord');
        objj = JSON.parse(objj);
            // console.log(obj);
            myMap.panTo(objj, {
                flying: 2,
                callback: function() {
                    alert('yeap!');
                }
            });
            var addTitle = $(this).find('.title').html();
            var addAddr = $(this).find('.arrd-hide').html();
            var addTels = $(this).find('.tels-hide').html();
            $('.center-addr__title').html(addTitle);
            $('.center-addr__address .addr').html(addAddr);
            $('.center-addr__address .tels__tel').html(addTels);
        });
});

По итогу, точки проставились, но не работает клик по ссылке с атрибутами. Причем, ругается не на функцию клика, а на функцию сбора данных:

var obj = $(this).attr("data-coord");
    obj = JSON.parse(obj);

Именно на вторую строку. ЧЯДНТ? Функция клика, если убрать сбор точек, работает Думаю, что что-то с преобразование, но не могу понять что именно :\ Перепробовал несколько вариантов Извиняюсь, что без примера на фидле

Спасибо

Answer 1

С помощью участников и тыканий решилась проблема. Функцию клика вынес выше .each, т.к. навигация по карте в DOM находится выше блока карты. Ошибка в консоле пропала тогда, когда были проставлены ко всем элементам навигации дата-атибуты. Кто будет тестить, заранее пропишите всем элементам дата-атрибуты и только потом уже можно тестить Благодарю всех за помощь! Спасибо огромное!

READ ALSO
нужна помощь с SASS

нужна помощь с SASS

Ребят, перешел на SASS сегодня, и появилось несколько проблем

373
css: background в разных браузерах

css: background в разных браузерах

Добрый день! Есть вот такой фон на css:

294
проблема с web.py и mysql

проблема с web.py и mysql

Разворачиваю свой проект на боевом сервере и каждый день сталкиваюсь все с новыми и новыми проблемами

278
Миграция пользователей с FileZilla на ProFTPd?

Миграция пользователей с FileZilla на ProFTPd?

Здравствуйте, уважаемые профессионалы ! У нас тут проект по реорганизации инфраструктуры компанииМне поручено ввести в строй новый файловый...

304