我正在尝试通过以下方式实现MarkerCluster(MS):
重叠标记群集(OMS)。一切似乎都正常。
但是,我正在尝试修改OMS的工作方式,以便如果我单击下面有2个点的群集
当我单击其中具有2个点且地理位置完全相同的任何群集时,它会打开一个标记,而当我单击该标记时,它会打开带有2个标记的蜘蛛。
当我点击
群集,将直接打开带有2个标记的蜘蛛
花很多时间,但仍然没有任何效果。
我已经尝试了许多解决方案,例如
1。
当我添加到OMS(oms.addMarker)时,我可以跟踪标记,并且可以
单击取决于Google地图的zoom_changed事件,但不会触发
spiderfy而不是我们添加到标记中的触发点击事件.....
2。
我看到了一个Spiderfy事件,因此我尝试使用
标记对象(oms.trigger('spiderfy',marker);),但是没有任何作用...
在这里我也添加了代码片段:mc = new MarkerClusterer(map, markers.locations, mcOptions);google.maps.event.addListener(mc, 'clusterclick', function(cluster) {
在此处输入代码clusterClicked = true; // HERE WE WANTS TO FIRE SPIDER FUNCTIONALITY ...});
最佳答案
我可以解决这个问题,首先很明显,您已经在Google地图中实现并重叠了Xluster Marker Marker Cluster。
我的解决方案很简单。
我们捕获了markerCluster的click事件。
获取markerCluster的标记。
检查所有markerCluster标记是否都在同一位置。
如果它们处于相同位置,则使单击事件触发,后者将获得markerCluster标记。
简而言之,这是代码:
var markerClusterer = new MarkerClusterer(map, allMarkers, {styles: styles[0], clusterClass: 'poiCluster', maxZoom:18});
google.maps.event.addListener(markerClusterer, 'click', function(cluster) {
var markers = cluster.getMarkers();
if(estanTodosEnLaMismaPosicion(markers)){
//to wait for map update
setTimeout(function(){
google.maps.event.trigger(markers[markers.length-1], 'click');
},1000)
}
return true;
});
function estanTodosEnLaMismaPosicion(markers){
var cont=0;
var latitudMaster=markers[0].getPosition().lat();
var longitudMaster=markers[0].getPosition().lng();
for(var i=0;i<markers.length;i++){
if(markers[i].getPosition().lat() === latitudMaster & markers[i].getPosition().lng() === longitudMaster ){
cont++;
}else{
return false;
}
}
if(cont==markers.length){
return true;
}else if(cont<markers.length){
return false;
}
}
关于markerclusterer - 点击标记集群,默认情况下要使用完全相同的位置标记打开蜘蛛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15549797/