2010-11-01 54 views
1

比方说,我想建立一个智能手机应用程序,告诉用户何时/在哪里下车的地铁站。我可以想到这样做的两种方法:跟踪地铁地图

1)使用GPS和地铁路线图,跟踪用户的位置,并在到达目的地时通知他。 2)当他开始时让他按下开始在列车开始时(这可能不现实,因为用户可能忘记这么做),使用从起始站到终端站的已知行程时间,并且在时间到了时通知他。

有人可以告诉我,如果有任何其他好办法?谢谢。

+1

像这样的服务必须可靠。如果没有南方天空的清晰视野,你没有GPS,所以没有了。测量开始和结束时间也是如此。即使您有适当的数据馈送实时更新,但在大多数隧道中仍存在更新问题和小区服务问题。只是猜测开始/结束时间远不够可靠。诚实地说,做这项工作的最好方法是提醒用户注意哪个站。 – Brad 2010-11-01 19:37:15

+0

你能否详细说明如何提醒用户需要注意哪个站点?例如,用户选择目的地电台,并且每2分钟地铁地图将在目的地电台闪烁的屏幕上闪烁? – user270811 2010-11-02 07:55:12

回答

2

你可能不得不采取'死算'。基本上,航位推算是一种导航技术,它使用确认的起始位置加上精确的速度和时间来计算新的位置。请记住,速度本身就是航向和速度的组合,而航向必须是真正的航向。在飞机上,罗盘航向必须与风速和方向相结合才能获得真正的航向。我不认为你必须考虑地铁上的漂移,但当用户四处移动或使用设备本身时,你将不得不考虑不同的设备方向。另外,仅仅因为航向通常是指南针方位并不意味着它必须是。您可以使用加速度计和计时器完成工作。

正确使用航位推算还需要经常对已知位置进行“重置”,以避免错误累积过多。对于这个应用程序,我认为曲线和停止检测可以用作重置。“服务”停靠点太靠近实际停靠点,可能会出现误报,但这些停靠点可能难以忽略。事实上,如果不是出口站,这可能无关紧要,因为你可能仍然准确地提供下一站警告,如果是出口站,那也不重要,因为乘车结束了。总结:你需要确保你有一个良好的初始起点;你需要补偿设备重新定位才能获得真正的标题;您需要知道航向变化和航向时间之间的平均速度以计算航向上的距离。您可以通过重置已知地标来提高整体精度。

编辑:我不知道这是否让你更接近答案,但克里斯·斯特拉顿提出了一个关于加速度计向量求和的有趣观点。是否有可能足够精确地跟踪设备的方向以获得可靠的与方向无关的重力矢量?你能保持你的矢量总和吗?这可以提供一个有用的方向无关矢量加速度?如果是这样,那么追踪加速的持续时间将使您获得该持续时间内的平均速度以及加速结束时的最终速度。没有加速度,速度将保持不变。把所有这些放在一起可能会在不准确的情况下将不准确性置于无用的地步。

+0

您没有任何东西可以远程接近可用的速度指标。集成加速度计不会给你任何有用的东西。运气很好,你可能能够在每个轨道关节处检测到碰撞,但仍然非常牵强。 – 2010-11-01 21:19:44

+0

@Chris Stratton:是的,我不知道使用加速度和持续时间来提高速度是否实用。如果设备完全固定在火车上,但试图在手持设备中分辨载体可能会让我头疼。尽管如此,许多事情让我很头疼,我认为这至少是在提及死脑筋。 – jadero 2010-11-02 18:22:55

1

这两个听起来像不好的解决方案。你几乎肯定不会在地铁里得到GPS追踪。第二种方式听起来像是不够准确,导致应用程序无法使用。

1

仔细阅读法尔玛丽的回答。他完全正确,虽然他没有给你答案。让我试试然后...

如果路线没有很多曲线,它会更容易:你只需要硬编码每个电台的经纬度,然后,计算用户的位置将是直截了当的(只是一点数学而就是这样)。如果路线有曲线,那么你有更多的工作要做,但基本上是一样的。

您可能会想要使用一种方法来了解当前位置与车站位置之间的距离。你可以使用一些现有的算法,例如Haversine formula

2

如果地铁线路有蜂窝服务(有些人会因为安全考虑而关掉它),您可能可以在网络位置上做些事情。

您可以使用加速度计来尝试检测并计算站点停靠点 - 但由于前方延迟,列车会不时停在站点之间。电池寿命也会减少。编辑:意识到你不能从减速中判断加速度,因为你不知道方位(除非你发现罗盘传感器在那个环境中可以工作) - 你只能看到三个加速度计的矢量和大于重力几秒钟。

您可以尝试使用麦克风来检测火车电机和制动器的声音(有些是非常有特色的),但电池寿命和车站之间不定期停车有同样的问题。更不用说预定的车站绕过维修工作。

也许你应该给用户一个滚动列表标记旅程的站点,让他们保持跟踪。

+0

你能否详细说明如何使用可滚动的电台列表?再次,在地图上闪烁点? – user270811 2010-11-02 07:56:52

+0

没有地图,从行程的开始到结束(该行的一部分)在一条线上制作一个垂直的电台列表。通常,这样的清单被张贴在平台上或水平地放置在汽车中,并且每个车站通过时打开灯。但是在纽约这样的城市,你将不得不接入服务变化的通知,因为车站可以被绕过,列车可以在不同的线路上重新布线。然后,当通过列车上的广播系统宣布从快车到本地或从本地到快车的非预先计划的更改时,您可以做的事情不多。 – 2010-11-02 12:40:40