我正在尝试处理谷歌地图(v3(中MarkerClusterer
(v1.0(上的点击事件,以便放大集群的中心。
问题所在
当用户单击群集器时,将显示以下错误:
未捕获的类型错误:无法读取未定义的属性"0">
at Cluster.getBounds (markerclusterer.js:903(
at ClusterIcon.triggerClusterClick (markerclusterer.js:1057(
at HTMLDivElement.(标记群集.js:1082(
Cluster.getBounds @ markerclusterer.js:903
ClusterIcon.triggerClusterClick @ markerclusterer.js:1057 (匿名( @ 标记群集.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 示例,同时说明相同的内容。