gpt4 book ai didi

markerclusterer - 默认情况下,单击标记簇会打开具有完全相同位置标记的蜘蛛

转载 作者:行者123 更新时间:2023-12-02 18:12:51 26 4
gpt4 key购买 nike

我试图用以下方法实现 MarkerCluster (MS)重叠标记簇 (OMS)。一切似乎都运转良好。

但是,我希望修改 OMS 的工作方式,这样如果我单击下面有 2 个点的簇

当我单击任何具有完全相同地理位置的 2 个点的簇时,它会打开一个标记,当我单击该标记时,它会打开带有 2 个标记的蜘蛛。

当我点击时我想要什么集群,直接用 2 个标记打开蜘蛛的方式,已经花了很多时间但仍然没有任何效果。

我已经尝试了很多解决方案,例如

1.当我添加到 OMS(oms.addMarker) 时,我可以跟踪标记,并且可以根据谷歌地图的 Zoom_changed 事件进行点击,但它没有触发Spiderfy 而不是我们添加到标记的触发点击事件......

2.我看到了一个事件 Spiderfy,所以我尝试用标记对象(oms.trigger('spiderfy',marker);)但没有任何作用......

这里我也添加了代码片段:

mc = new MarkerClusterer( map ,markers.locations,mcOptions);
google.maps.event.addListener(mc, 'clusterclick', 函数(集群) {
在此处输入代码clusterClicked = true;
//这里我们想要启动 SPIDER 功能 ...
});

最佳答案

我可以解决这个问题,首先很明显你已经在谷歌地图中实现了重叠Xluster标记集群。

我的解决方案非常简单。

  1. 我们捕获markerCluster的点击事件。
  2. 获取markerCluster的标记。
  3. 检查所有markerCluster标记是否位于同一位置。
  4. 如果它们处于相同的位置,我们将触发点击事件,后者获得了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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com