我试图用它来实现MarkerCluster(MS) 重叠标记簇(OMS)。一切似乎都很好。
但是,我希望修改OMS的工作方式,这样当我点击其下有2分的群集时
当我点击其中有2个点且具有完全相同地理位置的任何群集时,它会打开一个标记,当我点击该标记时,它会打开带有2个标记的蜘蛛。
当我点击时,我想要什么 群集,直接的方式它将打开蜘蛛与2个标记,已经 花了很多次但仍然没有用。
我已经尝试了很多解决方案,比如
1。 我在添加到OMS(oms.addMarker)时可以跟踪标记,并且可以 点击取决于谷歌地图的zoom_changed事件,但它没有开火 spiderfy而不是它点击我们添加到标记的点击事件.....
2。 我看到一个事件蜘蛛侠,所以我试图用一个触发该事件 标记对象(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 ...
});
答案 0 :(得分:1)
我可以解决这个问题,首先很明显你已经在google地图中实现并重叠了Xluster Marker Marker Cluster。
我的解决方案非常简单。
简而言之,这就是代码:
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;
}
}