作为我大学项目的一部分,我正在开发一个定制的移动导航应用程序。我正在使用J2ME。
通过自定义我的意思是该应用程序只能在用户希望使用它们的地方使用。现在,'定制'区域是我的大学校园。因此,如果任何学生需要指示到达他的教室或街区,他将被引导到那个位置。
我无法使用谷歌地图,因为校园并未完全覆盖。所以我采取所有街区和道路的坐标,并存储在我的地标商店,并创建一个迷你坐标地图。
现在真正的问题是'如何实现应用程序的导航部分'? 这就是我目前的实施行动计划。
我决定使用Dijkstra算法找到最短路径。我只是将用户的当前位置添加到图表中并将其称为源。 成本 - 邻接矩阵将填入程序中。
现在算法工作,并且第一条指令说明例如,生成最短路径。向北移动100米。
用户继续这样做,但是犯了一个错误并走错了方向。如何不断检查用户是否正在朝着正确的方向前进? 如果我每隔10秒检查一次他的位置,并提醒他是否在错误的路线上,(我也不知道该怎么做!即,检查他是否在正确的路线上)并再次产生新的指示我不会放慢申请速度?
有更好的实施方法吗?
PS:请帮我说明坐标必须如何存储在我的数据库中(landmarkstore) 我应该存储每个小距离(例如5mts)的坐标,还是应该使用更长的距离,以便减少图中节点的数量,并且算法运行得更快。
答案 0 :(得分:1)
首先,可以很容易地检测出“走错路线”:到达目的地的最短路径的长度正在增加。或者如果沿着最佳路径有一些“检查点”,那么用户就会离开下一个检查点。
对于复杂性,不要每5米或其他距离使用一个点:你需要在你的地图中有一些主要点(每扇门,走廊交叉......)你可以给你一个方向。您甚至可以想象每个建筑物之间以及每个建筑物内部的最短路径;你第一次需要离开大楼去另一栋楼。
无论如何,只要你有这些要点,你只需要在地图上添加一个点(用户位置)并将其连接到相邻的“要点”。
目前您的图表中有多少个节点?
<小时/> 编辑:
基本上这个想法如下:给定所有道路,预先计算从道路的任何一点到任何建筑物的最短路径是非常容易的。不需要为每条道路都这样做,只考虑每个交叉点或建筑物作为图表中的节点。然后在道路上给出一个点,只有两种可能性来读取节点:左或右。 (这当然假设人们留在路上但可以很容易地适应;))。
现在给一个人的位置找到最近的道路并找到通往这些道路的最短路径。您现在在不同的道路上有一些位置,并且很容易计算到目的地的最短路径。由于几乎所有内容都是预先计算的,因此您每秒都会多次更新您的信息。
您可以向该人发出指示,如果您发现距离目的地的距离正在增加,您可以警告他他的方向错误。