google-maps - 谷歌地图街景 - 高德地图




地图路由,谷歌地图? (6)

看一下开放的街道地图项目 ,看看这样的事情是如何处理真正的自由软件项目,只使用用户提供和许可的数据,并有一个包含你可能会感兴趣的东西维基

几年前,那些参与进来的人很容易,回答了很多问题,所以我没有理由认为他们还不是很好。

我一直对Map Routing感兴趣,但是我从来没有发现任何好的介绍(甚至是高级的)关于它的教程。 有人有任何指针,提示等?

更新:我主要是看如何实现一个地图系统的指针(数据结构,算法等)。


而不是学习每个地图服务提供商的API(如Gmaps,Ymaps API)学习Mapstraction非常好

“Mapstraction是一个为各种JavaScript映射API提供公共API的库”

我建议你去URL并学习一个通用的API。 也有很多的使用方法。


谷歌地图路线寻找功能的工程师之一巴里·布鲁米特(Barry Brumitt)在这个话题上写了一篇关于这个话题的文章:

通往更好的路径寻找之路 11/06/2007 03:47:00 PM


A *实际上更接近生产映射算法。 与Dijikstra的原始算法相比,它需要少得多的探索。


从我在这个领域的工作经验来看,A *的工作非常好。 它(如上所述)比Dijkstra的算法更快,但对于一个普通的程序员来说,实现和理解起来还是很简单的。

建设路线网络是最难的部分,但可以分解成一系列简单的步骤:获得所有道路; 按顺序排列点; 将不同道路上的相同点组成交点(节点); 在节点连接的两个方向上添加弧线(或者仅在单向道路的一个方向上)。

A *算法本身在维基百科上很好地记录 。 优化的关键在于从打开的列表中选择最佳的节点,为此您需要一个高性能的优先级队列。 如果您使用C ++,则可以使用STL priority_queue适配器。

自定义算法以便在网络的不同部分(例如,行人,汽车,公共交通工具等)优先考虑速度,距离或其他标准的路线是非常容易的。 您可以通过编写过滤器来控制哪些路段可用,何时构建网络,以及哪个权重分配给每个路径。


另一个想法是关于每次遍历的代价,但会增加计算所需的时间和处理能力。

示例:根据GoogleMaps的说法,我可以从3种方式(我住的地方)从A点到B点。 在Quickest路线计算中,Garmin单位提供这3条路径中的每条路径。 经过这些路线多次和平均(显然会有错误取决于一天中的时间,咖啡因的数量等),我觉得算法可以考虑在道路弯曲的次数高水平的准确性例如 ,1英里的直路将比1英里的弯路快, 这不是一个实际的建议,而是我用来改善我每天的通勤结果的一个实际的建议。





gis