Data structures 谷歌地图类应用程序的数据结构?

Data structures 谷歌地图类应用程序的数据结构?,data-structures,Data Structures,我正在做一个maprouting应用程序。有几个人建议我做一个数据结构,将地图分割成网格。从理论上讲,它听起来确实不错,但我不确定,因为我在实现它时表现不佳 在最坏的情况下,你必须画出每一条路。如果将地图划分为栅格,栅格中所有单元格中的道路总数将远远大于将所有道路放入列表中的道路总数(如果道路穿过每个单元格,则每个单元格中的道路数必须大于实际需要的道路数) 如果我必须放大,我可以看到使用网格的一些优点,但是如果我把它放在一个列表中,我可以在每次放大时减少道路的数量。 因为现在(通过使用列表)它不

我正在做一个maprouting应用程序。有几个人建议我做一个数据结构,将地图分割成网格。从理论上讲,它听起来确实不错,但我不确定,因为我在实现它时表现不佳

在最坏的情况下,你必须画出每一条路。如果将地图划分为栅格,栅格中所有单元格中的道路总数将远远大于将所有道路放入列表中的道路总数(如果道路穿过每个单元格,则每个单元格中的道路数必须大于实际需要的道路数)

如果我必须放大,我可以看到使用网格的一些优点,但是如果我把它放在一个列表中,我可以在每次放大时减少道路的数量。 因为现在(通过使用列表)它不是很快,所以我完全支持让它更快。但实际上,在网格中划分会使我的速度变慢


关于我应该使用什么样的数据结构和/或我可能做错了什么,有什么建议吗?

如果您想让它快速运行,您最好将道路组织到主要道路和次要道路中

使用次要道路列表查找到最近主要道路的路线。 使用主要道路使你接近目的地。 然后返回次要道路完成路线


如果没有这样的分割,有很多道路需要搜索,其中大部分都是非常慢的路线。

谷歌不会在每次刷新屏幕时绘制每条道路。他们使用预先绘制的地图分幅。他们可以根据需要重新绘制。e、 g.地图更新时。他们甚至使用透明的覆盖层,一堆堆的瓷砖来添加和删除细节层

很聪明,但很简单

您可能想看看openlayers javascript库。免费,你可以用地图做任何你需要做的事情


Maptraction JS也可用-它没有OpenLayers那么完整

有关相关信息,请参见此问题:

一个以编写这种软件为生的人回答了这个问题

有关渲染,请参见:


我不太确定您是在尝试快速布线还是渲染

比使用网格作为空间数据结构更优化的可能是四叉树,因为它以对数方式分解地图。通过研究数据来源,我猜测谷歌使用了(或)类似的数据结构


至于获取方向,您可能希望首先查看分层路径查找以近似方向并加快过程;通用路径查找算法在这种复杂程度上往往相当缓慢。

好主意——我还没有想到这一点。实际上,我的q只是关于绘制道路,但我可以在以后使用这个建议:)谢谢!为了回答你的问题,我只是要求渲染。那里有很多信息,现在已经很晚了,但我明天肯定会全部阅读:)谢谢!我只用Java和C语言编程才一年,所以从一开始我就觉得这有点高级了。不过还是很高兴知道。