我有一个带有标记聚类的Google地图。我在这里有一个演示:
https://codepen.io/EightArmsHQ/pen/LxLwZZ?editors=0010
我想在群集点击事件上创建一个函数,该事件会在您单击的群集未展开时触发。
走过:
4
,地图展开以显示这些标记3
,地图展开以显示下一个标记2
,地图仍会显示2
- 会触发一个功能。我可以这样做:
var oldSize = false;
google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
var newSize = cluster.getSize();
var extra = '';
if(newSize == oldSize){
alert('this is the same size as it was previously!');
}
oldSize = newSize;
});
但这不是我想要的,正如所发生的那样......
4
,地图展开以显示这些标记3
,地图展开以显示下一个标记2
,地图仍会显示2
2
,地图仍会显示2
,现在警报会显示任何人都可以帮我提前一步触发功能吗?
我有一张您可以在某些博物馆或其他地理位置访问的项目地图。当您单击每个标记时,我将信息加载到页面中。然而,有些物品在同一个博物馆里。我遇到的问题是当lat和lng对于多个标记完全相同时,群集永远停留在那里。
这很好,但在这种情况下,我想在同一位置加载所有标记的信息。因此,当您单击未展开的群集时,我尝试创建此功能。问题是,我第二次点击一个没有扩展的集群时发现这很简单,但不是第一次...
当你缩小很长时间时,如果你点击一个群集,我不想加载所有群集的所有信息,这使事情变得更加复杂。我不想在您无法放大时触发此功能。
答案 0 :(得分:0)
Your code is wrong because:
You can try to check if all the positions in the cluster markers are equals:
google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
var clusterMarkers = cluster.getMarkers();
var lastPosition;
if(clusterMarkers.every((currentMarker) => {
if(!lastPosition || lastPosition.equals(currentMarker.position)) {
lastPosition = currentMarker.position;
return true;
} else {
return false;
}
})) {
// Do something
}
});