Ошибка клика по кластеру в Google Map - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь обработать событие нажатия на MarkerClusterer (v1.0) на карте Google (v3), чтобы увеличить центр кластера.

Проблема

Когда пользователь нажимает на кластер, появляется следующая ошибка:

Uncaught TypeError: Невозможно прочитать свойство '0' из неопределенного

в Cluster.getBounds (markerclusterer.js: 903)

в ClusterIcon.triggerClusterClick (markerclusterer.js: 1057)

в HTMLDivElement.(markerclusterer.js: 1082)

Cluster.getBounds @ markerclusterer.js: 903

ClusterIcon.triggerClusterClick @ markerclusterer.js: 1057 (анонимно) @ markerclusterer.js: 1082

Эта строка, присутствующая в функции MarkerClusterer getBounds(), кажется связанной с этой ошибкой:

for (var i = 0, marker; marker = markers[i]; i++) {

Источники

map = new google.maps.Map(document.getElementById('storemap'), {
    center: {lat: parseFloat(defaultLat), lng: parseFloat(defaultLong)},
    disableDefaultUI:false,
    fullscreenControl:false,
    streetViewControl:true,
    zoom: 8, 
    styles : mapstyles
});


mc = new MarkerClusterer(map, markers, {styles: clusterStyles});
google.maps.event.addListener(mc, 'clusterclick', function(cluster){
    map.setCenter(cluster.getCenter());
    map.setZoom(map.getZoom()+3);
});

Мой вопрос

Как я могу исправить ошибку, когда пользователь нажимает на кластер?

1 Ответ

0 голосов
/ 25 сентября 2018

Вам не нужно добавлять пользовательское событие clusterclick в кластер маркеров.

Удалите прослушиватель clusterclick.

google.maps.event.addListener(mc, 'clusterclick', function(cluster){
    map.setCenter(cluster.getCenter());
    map.setZoom(map.getZoom()+3);
});

Просто сохраните код инициализации MarkerClusterer.

mc = new MarkerClusterer(map, markers, {styles: clusterStyles});

Когда вы нажимаете на кластер, он автоматически увеличивает масштаб, а также центрирует кластер.Вы можете найти MarkerClusterer Example , хотя иллюстрирует то же самое.

...