Google地图中群集器上的点击错误

时间:2018-09-25 09:19:33

标签: javascript google-maps markerclusterer

我正在尝试处理Google Map(v3)中MarkerClusterer(v1.0)上的click事件,以便放大群集器的中心。

问题

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

  

未捕获的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 :(得分:0)

您不需要在标记群集上添加自定义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的说明中找到它。