Клуб API Карт

Координаты по data атрибутам

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

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

<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 .main-centers__link').each(function() {
			var obj = $(this).attr("data-coord");
			obj = JSON.parse(obj);
			console.log(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);

Именно на вторую строку. ЧЯДНТ? Функция клика, если убрать сбор точек, работает

Спасибо

2 комментария
Скорее всего, в первой строке attr("data-coord") возвращает undefined. JSON.parse первым делом приводит первый аргумент к строке (https://www.ecma-international.org/ecma-262/5.1/#sec-15.12.2), и парсит, в итоге, строку "undefined".  
Обновлено 7 июня 2017, 20:58
Удалённый пользователь
7 июня 2017, 21:21
Андрей,
Спасибо за подсказку, но ошибку была очень банальна) Я не всех элементам навигации прописал дата-атрибуты и вызывал .each раньше .click. Поменял местами, дописал всем атрибуты и все заработало, ошибка пропала