【问题标题】:Collapsed markers on Google Maps with MarkerClusterer使用 MarkerClusterer 在 Google 地图上折叠标记
【发布时间】:2011-05-05 21:28:36
【问题描述】:

我正在使用 GMaps V3 和来自 http://code.google.com/p/gmaps-utility-library-dev/ 的 MarkerClusterer

地图上显示的标记是用户定义的,并且经常折叠,因此无论您放大多少,聚类器始终显示一个位置有多个项目。但是用户应该能够单击每个标记以查看信息窗口。你知道有什么方法可以解决这个问题吗?

我尝试在服务器上随机化一些位置,但随机性不够随机,标记不断崩溃,只是不那么频繁。

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers collapse markerclusterer


    【解决方案1】:

    添加标记时,您可以检查同一位置是否有其他标记,并且在信息窗口中您可以注意到有多个标记。

    【讨论】:

    • 首先,正如我已经写过的,我会在添加标记时检查并随机化它的位置(如果它已经被占用)。但随机数也可能在同一点结束。其次,MarkerClusterer 仅在单个标记上显示信息窗口,而不在标记组上显示。你知道如何改变这种行为吗?
    【解决方案2】:

    我遇到了这个问题,并通过定义“maxZoom”的构造函数属性来解决它,该属性低于谷歌地图的 maxZoom:

    var markerCluster = new MarkerClusterer(map, markers, { maxZoom: 18 });
    

    【讨论】:

    • 谢谢。这可以防止聚类器对标记进行分组,但是当坐标相同时,所有标记都保持在彼此之上。您知道任何解决方法吗?
    • 查看我的其他答案:stackoverflow.com/questions/4111080/…
    【解决方案3】:

    在我之前的回答中回复 OP 的评论,因为它不适合评论框:

    这可以防止 clusterer 对标记进行分组,但是当坐标相同时,所有标记都保持在彼此之上。您知道任何解决方法吗?

    我认为这是 Google 地图的预期行为 - 如果标记具有完全相同的 lat/lng,那么您会得到彼此重叠的标记。

    一种可能的解决方法是仅将第一个标记添加到地图,然后当您尝试将另一个标记添加到已定义的 lat/lng(使用 JS 地图跟踪它们)时,您可以添加一个计数(或建立一个标记信息数组)并使用该信息更新信息窗口文本。例如。单击标记会显示一个信息窗口,显示此位置有 15 个“事物”,然后在其下方的列表中列出它们的名称和属性...

    另一种可能性是通过在十进制 lat/lng 末尾添加一个随机数来“抖动”后续标记。这样,当用户一直放大时,标记会稍微偏移。不过这个选项感觉有点“脏”。

    【讨论】:

    • 我同意feels a bit "dirty",这就是目前的做法。我希望 GMaps 足够聪明,可以对折叠的标记进行分组,但似乎必须手动完成。谢谢。
    • 如果您选择第一个选项,那么另一个不错的技巧是使用自定义标记图像来指示该位置有多个实体(例如,如下所示:collections.ala.org.au)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多