Как настроить группу объявлений в Яндекс Карты для вывода?

Я хочу настроить вывод объявлений на карту Яндекс карты так что бы при нажатии на группу меток, отображалось окно с информацией где будет название машины картинка и телефон

Пример:

Множество

Так же что бы можно было влиять на стили окна, текст и картинку через css.

В данный момент я получаю подобное но без списка имен (они просто не вставляются в список слево) и овно с информацией не настраивается.

Текущий результат:

Текущее

Хотелось бы узнать как можно решить эту проблемы что бы реализовать настраиваемое окно.

Мой текущий код с отображением единичных объявления (работает как положено) и с груповыми которые отображаются не корректно.

<script type="text/javascript" src="//api-maps.yandex.ru/2.1/?lang=en_RU"></script>
<script>
var markers = [
    @if(isset($data['cars']))
    @foreach($data['cars'] as $car)
    {
        name: "{{ $car['name'] }}",
        link: "{{ $car['link'] }}",
        phone: "{{ $car['phone'] }}",
        image: "{{ $car['image'] }}",
        lat: {{ $car['latitude'] }},
        lon: {{ $car['longitude'] }}
    },
    @endforeach
    @endif
];

ymaps.ready(init);

function init() {
    var map = new ymaps.Map("ya-map", {
        center: [55.75, 37.61],
        zoom: 10
    });

    // Добавление меток на карту
    var placemarks = [];

    markers.forEach(function (marker) {
        var placemark = new ymaps.Placemark([marker.lat, marker.lon], {
            hintContent: marker.name,
            balloonContent: '<div class="map-model p-2 overflow-hidden"><a class="map-model__images mb-2" href="' + marker.link + '" target="_blank"><img class="img-fluid" src="' + marker.image + '"></a><div class="map-model__info"><a class="info-title mb-1" href="' + marker.link + '" target="_blank">' + marker.name + '</a><div class="info-phone d-flex flex-wrap align-items-center"><a href="tel:' + marker.phone + '" class="mr-1 phone">' + marker.phone + '</a></div></div><div class="map-model__arrow"></div></div>'
        }, {
            preset: 'islands#darkGreenIcon',
            iconColor: '#ff0000'
        });

        placemarks.push(placemark);
    });

    var clusterer = new ymaps.Clusterer({
        preset: 'islands#invertedRedClusterIcons',
        groupByCoordinates: false,
        clusterDisableClickZoom: true,
        clusterHideIconOnBalloonOpen: false,
        geoObjectHideIconOnBalloonOpen: false
    });

    clusterer.add(placemarks);
    map.geoObjects.add(clusterer);

    // Создание списка
    var names = document.getElementById('names');
    var list = document.createElement('ul');
    names.appendChild(list);

    markers.forEach(function (marker, index) {
        var item = document.createElement('li');
        var name = document.createElement('div');
        name.textContent = marker.name;
        name.setAttribute('data-index', index);
        name.style.cursor = 'pointer';
        name.addEventListener('click', function () {
            var info = document.getElementById('info');
            var index = this.getAttribute('data-index');
            info.innerHTML = '<div class="map-model p-2 overflow-hidden"><a class="map-model__images mb-2" href="' + marker.link + '" target="_blank"><img class="img-fluid" src="' + marker.image + '"></a><div class="map-model__info"><a class="info-title mb-1" href="' + marker.link + '" target="_blank">' + marker.name + '</a><div class="info-phone d-flex flex-wrap align-items-center"><a href="tel:' + marker.phone + '" class="mr-1 phone">' + marker.phone + '</a></div></div><div class="map-model__arrow"></div></div>';
        });

        item.appendChild(name);
        list.appendChild(item);
    });

}
</script>
<div id="ya-map" style="width:100%;height:700px;overflow:hidden;border-radius:10px;"></div>

Ответы (0 шт):