在 Google 地图中的聚类器上单击错误

Click error on a clusterer within a Google Map

我正在尝试在 Google 地图 (v3) 中处理 MarkerClusterer (v1.0) 上的点击事件,以便放大聚类器的中心。

问题

当用户点击集群器时,显示以下错误:

Uncaught TypeError: Cannot read property '0' of undefined

at Cluster.getBounds (markerclusterer.js:903)

at ClusterIcon.triggerClusterClick (markerclusterer.js:1057)

at HTMLDivElement. (markerclusterer.js:1082)

Cluster.getBounds @ markerclusterer.js:903

ClusterIcon.triggerClusterClick @ markerclusterer.js:1057 (anonymous) @ 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);
});

我的问题

当用户点击集群器时如何修复错误?

您不需要在标记集群上添加自定义 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 while illustrates same.