Android 追踪地铁地图

Android 追踪地铁地图,android,google-maps,gps,Android,Google Maps,Gps,比如说,我想构建一个智能手机应用程序,告诉用户何时/何地下地铁站。我可以想出两种方法: 1) 使用GPS和地铁线路图,跟踪用户的位置,并在到达目的地时通知用户 2) 在列车启动时,让他在上车时按start(这可能不现实,因为用户可能会忘记这样做),使用从起点站到终点站的已知行程时间,并在时间结束时通知他 有人能告诉我还有什么好办法吗?谢谢。这两种解决方案听起来都很糟糕。你几乎肯定不会在地铁里得到GPS跟踪。第二种方法听起来不够准确,足以使应用程序无用。这两种方法听起来都是糟糕的解决方案。你几乎肯

比如说,我想构建一个智能手机应用程序,告诉用户何时/何地下地铁站。我可以想出两种方法:

1) 使用GPS和地铁线路图,跟踪用户的位置,并在到达目的地时通知用户 2) 在列车启动时,让他在上车时按start(这可能不现实,因为用户可能会忘记这样做),使用从起点站到终点站的已知行程时间,并在时间结束时通知他


有人能告诉我还有什么好办法吗?谢谢。

这两种解决方案听起来都很糟糕。你几乎肯定不会在地铁里得到GPS跟踪。第二种方法听起来不够准确,足以使应用程序无用。

这两种方法听起来都是糟糕的解决方案。你几乎肯定不会在地铁里得到GPS跟踪。第二种方法听起来不够准确,足以使应用程序无用。

仔细阅读Falmari的答案。他完全正确,尽管他没有给你答案。那么让我试试

如果路线没有太多的曲线,那就更容易了:你只需要对每个站点的纬度和经度进行硬编码,然后,计算用户的位置就很简单了(只需要一点数学知识就可以了)。如果路线有曲线,那么你有更多的工作要做,但基本上是一样的


您可能需要使用一种方法来了解当前位置和桩号位置之间的距离。您可以使用一些现有的算法,例如。

仔细阅读Falmari的答案。他完全正确,尽管他没有给你答案。那么让我试试

如果路线没有太多的曲线,那就更容易了:你只需要对每个站点的纬度和经度进行硬编码,然后,计算用户的位置就很简单了(只需要一点数学知识就可以了)。如果路线有曲线,那么你有更多的工作要做,但基本上是一样的


您可能需要使用一种方法来了解当前位置和桩号位置之间的距离。您可以使用一些现有的算法,例如。

如果地铁线路有移动电话服务(一些出于安全考虑将其关闭),您可能可以对网络位置做一些事情

你可以使用加速计来检测和计算车站的停车次数,但是由于前方的延误,火车不时会在车站之间停车。电池寿命也会缩短。编辑:意识到你将无法区分加速和减速,因为你不知道方向(除非你发现罗盘传感器在那种环境下可行)-你只能看到三个加速度计的矢量和在几秒钟内大于重力

你可以试着用麦克风来检测火车马达和刹车的声音(有些是非常特殊的),但电池寿命和站与站之间的非计划停车也有同样的问题。更不用说为维修工作而绕开的预定车站了


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

如果地铁线路有移动电话服务(有些出于安全考虑将其关闭),你也许可以对网络位置做些什么

你可以使用加速计来检测和计算车站的停车次数,但是由于前方的延误,火车不时会在车站之间停车。电池寿命也会缩短。编辑:意识到你将无法区分加速和减速,因为你不知道方向(除非你发现罗盘传感器在那种环境下可行)-你只能看到三个加速度计的矢量和在几秒钟内大于重力

你可以试着用麦克风来检测火车马达和刹车的声音(有些是非常特殊的),但电池寿命和站与站之间的非计划停车也有同样的问题。更不用说为维修工作而绕开的预定车站了


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

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

正确使用航位推算法还需要在到达已知位置时频繁地“重置”,以便误差不会累积得太多。对于这个应用程序,我认为曲线和停止检测可以用作重置。如果“服务”站点太接近实际站点,则可能会出现误报,但这些误报可能非常罕见,可以忽略。事实上,如果不是出口站,那可能无关紧要,因为你可能对下一个停车警告仍然足够准确,如果是出口站,那就无关紧要了,因为旅程结束了

总而言之:你需要确保你有一个良好的初始起点;您需要对设备重新定向进行补偿,以获得真正的航向;您需要知道航向变化之间的平均速度和航向上的时间,以计算航向上的距离。您可以通过在kno重置来提高整体精度