我正在尝试通过以下方式实现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/

10-08 22:57
查看更多