Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图标记聚类器“;“如果不扩展”;功能_Javascript_Google Maps_Google Maps Api 3_Markerclusterer - Fatal编程技术网

Javascript 谷歌地图标记聚类器“;“如果不扩展”;功能

Javascript 谷歌地图标记聚类器“;“如果不扩展”;功能,javascript,google-maps,google-maps-api-3,markerclusterer,Javascript,Google Maps,Google Maps Api 3,Markerclusterer,我有一个带有标记聚类的谷歌地图。我这里有一个演示: 我想在cluster click事件上创建一个函数,当您单击的集群没有展开时触发该事件 走查: 单击伦敦旁边的4,地图将展开以显示这些标记 单击3,地图将展开以显示下一个标记 单击2,地图仍显示2——一个函数被触发 我可以这样做: var oldSize = false; google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) { v

我有一个带有标记聚类的谷歌地图。我这里有一个演示:

我想在cluster click事件上创建一个函数,当您单击的集群没有展开时触发该事件

走查:

  • 单击伦敦旁边的
    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完全相同时,集群将永远留在那里

    这很好,但是在本例中,我希望加载同一位置中所有标记的信息。所以我试图创建一个函数,当你点击一个没有扩展的集群时,它就可以做到这一点。问题是,我发现在你第二次点击一个没有扩展的集群时,做这件事很简单,但不是第一次


    更复杂的是,当你被放大很长一段距离时,如果你点击一个集群,我不想加载所有集群的所有信息。我只想在您无法再放大时触发此函数。

    您的代码错误,因为:

  • 单击伦敦旁边的4,地图将展开以显示这些 标记(4!=错误)
  • 单击3,地图将展开以显示下一个标记(3!=4)
  • 单击2,地图仍然显示2(2!=3)
  • 单击2,地图仍显示2,此时警报将触发(2==2)
  • 您可以尝试检查簇标记中的所有位置是否相等:

    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
      }
    });
    

    当你第一次点击“2”时,你希望发生什么?问题是在同一个地方有两个标记。通常的解决方法是@geocodezip请查看更多相关信息–重叠标记器看起来很棒–我会检查一下。我记得有几个类似的问题发布过。重复的