Google Maps V3 渲染超过 100 万个标记(在合理的时间内)

Posted

技术标签:

【中文标题】Google Maps V3 渲染超过 100 万个标记(在合理的时间内)【英文标题】:Google Maps V3 rendering over 1 million markers (in a reasonable time) 【发布时间】:2014-04-22 10:55:36 【问题描述】:

我最近使用 API V3(最新版本)创建了一个 Google 地图。我的要求之一是能够渲染超过 100 万个标记(在合理的时间内)。合理的时间应在 15 秒以下。

我知道一次渲染所有 100 万个标记是相当疯狂的,这就是我研究性能选项的原因。我遇到并使用的选项之一是 MarkerClusterer:https://developers.google.com/maps/articles/toomanymarkers

但是,我现在开始在使用超过 100,000 个标记测试 MarkerClusterer 时发现性能问题,因为渲染地图和标记需要很长时间(1 分钟以上)。最终,我设法用大约 200,000 个标记使页面崩溃。

在使用这么多标记时,有什么方法可以提高地图的性能?

提前感谢您的帮助。

【问题讨论】:

您可以考虑改用 FusionTablesLayer,在您用来绘制标记的地方添加圆圈。不期望所有标记都应该负责:) 没有测试过,但我认为这将是一种更快的方法。 我会考虑这些。我快速浏览了文档,似乎数据由谷歌持有,以便他们可以进行处理。这很好,但我必须看看这些是否可以在任何手动干预需要时自动更新。 【参考方案1】:

我在地图上显示一百万多个点时遇到了类似的挑战。

在服务器端使用弹性搜索集群,在客户端使用传单集群。

这可能会有所帮助..

演示here

查看代码here

【讨论】:

【参考方案2】:

我已经成功使用了 Google Fusion Tables,它非常快速且非常简单——一旦你弄清楚如何使用 OAuth2....

每个表格限制为 100,000 个条目,您可以从 CSV 文件上传它们 - 通过在浏览器中转到您的 Google 云端硬盘或使用 curl 或 Perl 以编程方式进行。

要超过 100,000 个元素的限制,您可以在地图中添加 5 个图层,但这仍然只能达到 500,000 个点。无法提出更多建议。

如果你想看看,我的项目是here。

【讨论】:

您能否详细说明一下或提供一个链接来说明如何操作?我对javascript相当陌生,这正是我面临的问题。 @Naman 看看这里***.com/questions/22096497/… 感谢链接,但实际上我不知道如何使用 google fusion table 以及如何完成 fusion table 的设置。因此,如果您也可以为此提供一些资源。这将是非常大的帮助。非常感谢您抽出时间。 另外,您能否就另外一个查询提出您的建议。我有大约 20,000 个标记,但我没有静态的。用户提供一个文件,然后我在我的 javascript 文件中处理它,然后我有了位置。如果我在代码初始化中添加融合表中的所有条目会很快吗?还是应该仅通过在融合表中保持数据静态来完成? Google Fusion Tables 服务将于 2019 年 12 月 3 日结束。

以上是关于Google Maps V3 渲染超过 100 万个标记(在合理的时间内)的主要内容,如果未能解决你的问题,请参考以下文章

Google Maps V3:仅在视口中显示标记 - 清除标记问题

如何在 Google Maps API v3 中设置标记的 z-index

Google Maps v3和JQuery选项卡(JQuery选项卡Google Maps bug)

html Google Maps v3绘图工具

在 maps.google.com 上的缩放比在 Google Maps API v3 上更流畅

google maps js v3 api教程 -- 在地图上添加标记