Чтобы реализовать вызов функции `showInfo` при клике на маркер в кластеризованной карте Яндекс.Карт v3, вам нужно следовать нескольким шагам. Вы можете использовать события для обработки кликов на маркерах. Ниже представлен пример того, как можно это сделать.
1. Создайте функцию `showInfo`, которая будет отвечать за логику отображения информации и изменения центра карты.
2. Добавьте обработчик события `click` для каждого маркера, который будет вызывать данную функцию.
Вот обновленный код:
```javascript
initMap();
async function initMap() {
await ymaps3.ready;
const {YMap, YMapDefaultSchemeLayer, YMapMarker, YMapLayer, YMapFeatureDataSource} = ymaps3;
const {YMapClusterer} = await ymaps3.import('@yandex/[email protected]');
// Инициализация карты
const map = new YMap(document.getElementById('map'), {
location: {
center: [37.588144, 55.733842],
zoom: 10
}
});
// Добавляем слой
map.addChild(new YMapDefaultSchemeLayer());
// Создание кластеризатора
const clusterer = new YMapClusterer();
// Пример данных для маркеров
const markersData = [
{coordinates: [37.588144, 55.733842], info: 'Marker 1'},
{coordinates: [37.590, 55.735], info: 'Marker 2'},
// Добавьте дополнительные маркеры по необходимости
];
// Добавляем маркеры и прикрепляем обработчики
markersData.forEach(data => {
const marker = new YMapMarker(data.coordinates);
// При клике на маркер вызываем функцию showInfo с необходимыми параметрами
marker.events.add('click', () => {
showInfo(data.info, data.coordinates);
});
// Добавляем маркер в кластеризатор
clusterer.add(marker);
});
// Добавляем кластеризатор на карту
map.addChild(clusterer);
}
// Функция для отображения информации и перемещения карты
function showInfo(info, coordinates) {
alert(`Маркер: ${info}`); // Здесь вы можете использовать свой метод отображения информации
// Перемещение центра карты к координатам маркера
const map = document.getElementById('map').ymaps.Map; // Предполагается, что у вас есть доступ к объекту карты
map.setCenter(coordinates, 14); // Перемещаем к координатам и задаем уровень масштабирования
}
```
### Объяснение кода:
1. **Инициализация карты и кластеризатора**: Вы инициализируете карту и добавляете слой, который будет использоваться для отображения маркеров и классов. Кластеризатор объединяет маркеры в группы для лучшего отображения.
2. **Добавление маркеров**: Для каждого маркера в массиве `markersData` создается экземпляр `YMapMarker`. На этот маркер навешивается обработчик события клика (`click`), который вызывает функцию `showInfo`.
3. **Функция `showInfo`**: Эта функция принимает информацию и координаты маркера. В примере отображается информация в виде всплывающего окна с помощью `alert`, но вы можете заменить это на любое другое представление. Также в этой функции происходит перемещение центра карты и изменение уровня масштабирования.
Обратите внимание, что для получения доступа к объекту карты внутри функции `showInfo` вы можете использовать подходящий способ, например, создавать переменную `map` вне функции и ссылаться на нее внутри `showInfo`.