jQuery(document).ready(function($) {
if (typeof ymaps === 'undefined') {
// Если Yandex Maps API еще не загружено, загрузим его
$.getScript('https://api-maps.yandex.ru/2.1/?apikey=YOUR_API_KEY&lang=ru_RU', function() {
ymaps.ready(initMap);
});
} else {
ymaps.ready(initMap);
}
function initMap() {
var productData = window.productData;
var map = new ymaps.Map('main-map', {
center: [59.938784, 30.314997], // Начальные координаты центра карты
zoom: 12
});
// Группируем данные по координатам
const grouped = productData.reduce((acc, n) => (
(acc[n.coordinates] ??= []).push(n),
acc
), {});
for (const [coord, data] of Object.entries(grouped)) {
const placemark = new ymaps.Placemark(
coord.split(',').map(parseFloat),
{
balloonContent: data
.map(n => `
<div>
${n.address}
<br>
<a href="${n.productURL}">Подробнее</a>
</div>`)
.join(''),
},
{
preset: 'islands#blueDotIcon',
maxWidth: 300,
}
);
map.geoObjects.add(placemark);
}
}
});