通过Javascript在google地图上创建约50K个对象

通过Javascript在google地图上创建约50K个对象,javascript,google-maps,web,Javascript,Google Maps,Web,我正在设计一个应用程序,它几乎可以在谷歌地图上显示50K辆车,其中包括一些细节,如姓名、号码和图片 我想知道做这件事的最佳做法是什么。有些人建议制作本机移动应用程序或桌面应用程序,但我需要一个可以在Web浏览器上运行的Web应用程序。数据将以JSON格式直接从服务器中提取 我应该限制数据还是有一些解决办法 谢谢正如评论中所建议的那样,最好将要显示的50K个数据点进行聚类 即使在24英寸1920x1080显示器上看到50K数据点,也意味着每个点都有~41个像素,这意味着每个点都有6x6个像素的正方

我正在设计一个应用程序,它几乎可以在谷歌地图上显示50K辆车,其中包括一些细节,如姓名、号码和图片

我想知道做这件事的最佳做法是什么。有些人建议制作本机移动应用程序或桌面应用程序,但我需要一个可以在Web浏览器上运行的Web应用程序。数据将以JSON格式直接从服务器中提取

我应该限制数据还是有一些解决办法


谢谢

正如评论中所建议的那样,最好将要显示的50K个数据点进行聚类

即使在24英寸1920x1080显示器上看到50K数据点,也意味着每个点都有~41个像素,这意味着每个点都有6x6个像素的正方形,它们将填满整个屏幕

很明显,你会有很多重叠

此外,从JSON中的服务器获取50K数据点(您可能会得到一个大的JSON),这意味着您从服务器获取的每个请求至少有50K x 10 x 2=1000000字节=1MB。 (50k点x每个浮点数10字节,带5位小数x 2个数字,因为有lat和long)

所以,如果你想让它成为实时的,你可能需要每隔2秒左右发出这些请求

此外,并非所有这些都适合视口,因此您必须排除那些不在视口中的,因为它们无论如何都不会显示。因此服务器应该知道客户端使用的是哪种显示(分辨率)

我认为最好的方法是在服务器端编写一些集群逻辑,让客户端处理更少的数据点。 (这里我所说的集群是指多个点,放大时,它们会分成不同的组)

更新

还考虑到当DOM节点计数增加时,选择器将运行得较慢,因为它们将不得不搜索许多节点。但是,如果将标记放在一个层中,并且不要让选择器接触该层,这样它们就不会丢失时间,那么就可以避免速度问题。 更新#2

为了高效地发送数据,您可以先对数据进行编码,然后将其传递到客户端,在客户端可以使用解压和读取数据

我假设你在服务器端使用C++,但也有。 更新#3

还要检查,这是一个轻量级传输协议

更新#4: 在某些情况下,某些点可能自上次更新以来一直保持其位置,在这种情况下,您不需要发送其位置

类似地,根据点的速度和缩放级别,可能会出现一些点 看起来它们根本没有移动(如果您从很远的地方查看它们),因此您可能不希望每次都发送这些点的位置。 所以只发送那些会改变客户端显示位置的内容
有意义(因为其他的会显示为静态的,尽管它们不是).

嗯,处理如此大量对象的最佳方法是使用服务器端光栅渲染。

一次获取所有数据,但只绘制视图端口上或视图端口附近的标记。

使用群集库怎么样?从大约50K辆汽车中,很可能是在一个城市中,数据可以逐步加载,我想知道关于DOM。让桌面应用程序有意义吗?欢迎@WaqarAlamgir。我会选择web应用程序,因为开发速度会比桌面应用程序更快,也不那么古怪(在桌面应用程序中,你有许多平台,比web应用程序更难实现兼容性)。一次获取5万条记录的最佳方法是什么