Подскажите как решить данную проблему: на странице есть несколько блоков с классом js-address и ссылкой "Показать на карте" внутри них. При клике на эту ссылку на карте должна появляется соответствующая метка с нужными координатами. Координаты я задал в разметке при помощи data атрибутов у блока-родителя ссылки js-address.
После загрузки документа при клике на любую из ссылок карта строится по нужным координатам (указанным у родителя ссылки, на которую кликнули), но затем клик на другую ссылку ни к чему не приводит: метка остается прежней.
Я отталкивался от этого примера в документации
https://tech.yandex.ru/maps/jsbox/2.1/request_map, но что то не пошло.
Код скрипта:
var mapContainer = $('#map');
if(mapContainer.length) {
ymaps.ready(init);
}
function init() {
var map;
$('.contacts__address--link').each(function() {
var self = $(this);
self.bind({
click: function (e) {
e.preventDefault();
var longitude = self.parents('.js-address').attr('data-longitude');
var latitude = self.parents('.js-address').attr('data-latitude');
map = new ymaps.Map('map', {
// Координаты центра карты. «широта, долгота».
center: [longitude, latitude],
// Уровень масштабирования. Допустимые значения: от 0 (весь мир) до 19.
zoom: 17
});
// Создание метки
var myGeoObject = new ymaps.GeoObject({
// Описание геометрии.
geometry: {
type: "Point",
coordinates: [longitude, latitude]
}
});
map.geoObjects.add(myGeoObject);
map.behaviors.disable('scrollZoom');
// Получаем центр карты в пикселях
var pixelCenter = map.getGlobalPixelCenter(longitude, latitude);
// Устанавливаем сдвиг центра по оси Х
pixelCenter = [
pixelCenter[0] - 300,
pixelCenter[1]
];
// Устанавливаем новые координаты
var geoCenter = map.options.get('projection').fromGlobalPixels(pixelCenter, map.getZoom());
map.setCenter(geoCenter);
}
});
});
};