【问题标题】:Maps API v3 clustering at different zoom levels不同缩放级别的 Maps API v3 集群
【发布时间】:2014-06-13 20:42:25
【问题描述】:

我正在开发一个需要聚类的地图项目。我实现了一个商店定位器并使用了工作正常的 MarkerClusterer。现在我有来自客户的另一个要求,我想知道应该使用哪种解决方案来实现这些目标:

  • 缩放级别 0:彼此之间 1500 公里距离内的群集标记
  • 缩放级别 1:1000 公里内的集群
  • 缩放级别 2:750 公里内的集群
  • 缩放级别 3:400 公里内的集群
  • 缩放级别 4 及以上:无聚类

我在想我应该同时使用 MarkerManager 和 MarkerClusterer,但我不确定。有什么帮助可以让我走上正确的道路吗?

提前致谢!

【问题讨论】:

    标签: google-maps-api-3 markerclusterer markermanager


    【解决方案1】:

    你只能使用MarkerClusterer,但是你必须修改一些选项。

    为了防止集群器在级别 4 之后动作,您必须使用maxZoom 属性。它定义了集群器可以集群标记的最大级别,因此在您的情况下,您必须将其修复为 4。

    然后,要根据缩放级别更改网格的大小,请使用gridSize 属性。您可以找到所有选项字段的定义on the doc.

    因此,您的 MarkerCluster 实例将如下所示:

    var mcOptions = {gridSize: /*Your value*/, maxZoom: 4};
    var markerCluster = new MarkerClusterer(map, /*your array of markers*/ mcOptions);
    

    【讨论】:

    • 您好,谢谢您的回答。我了解maxZoom 属性。但是告诉集群器根据缩放级别更改gridSize 的过程是什么?每次缩放级别更改时我是否应该重新创建集群?或者我可以使用setGridSize 方法吗?如果是,会动态更新吗?
    • 另外,我需要根据距离(以公里为单位)对标记进行聚类,并以像素为单位设置网格大小。所以我想我必须自己进行转换?
    • 我从来没有亲自做过,所以我不确定答案。但是,setGridSize 方法似乎完全符合您的要求,因此我强烈建议您对其进行测试。但我不确定集群器的自动刷新。你是对的,你必须自己做转换像素/公里。
    • 完美!这就像一个魅力。我在zoom_changed 上添加了一个监听器,并根据我计算的值调用setGridSize。再次感谢。
    • @AlexB 我似乎无法理解 gridSize。你能解释一下吗??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-09-12
    • 2013-04-30
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多