2015-08-19 21 views
1

我工作的一个Android应用程序,它会跟踪车辆的位置,并发送经纬度点,每秒又一春的webapp点击按钮后,“开始车速”来的经纬度路线路径。 我需要存储此位置以便在Google地图中呈现,以在地图上显示车辆的实时位置。它工作正常,但是,我必须存储所有获取的点,以便显示驱动程序在应用程序中单击“停车”时所遍​​历的完整路线。如何有效地存储从Android应用程序

我已经应用了以下策略,但似乎都效率低以及太消耗资源:

  • 商店位置列表中的服务器端,当每个当前的位置请求到达并保留在参数servletContext。继续更新收到的每个点的清单。问题:对于一个小时左右的行程,收到太多的积分,并且它们会占用大量的内存。如果服务器关闭或某事崩溃,servletContext消失,整个数据也消失了。
  • 存储(使用PostgreSQL)在数据库表行的位置。问题:什么时候应该在DB中保存条目?然后做数据库事务+消耗那么多的数据库空间?代价很高,对吗?
  • 不要存放在服务器端所有的位置,只要保持当前的活地图。而是在android应用程序端保存位置列表,并在驱动程序选择停止车辆时将其发送到服务器。问题:从服务器端听起来很公平,但android手机能够处理那个非常大的列表,然后通过电话向服务器发送?
  • 使用Hibernate和的Ehcache。我应该考虑吗?

我一直坚持如何有效地做到这一点,通过占用最少的资源,并且降低生产服务器成本。

任何帮助,将不胜感激两个机器人,服务器和整个方法完全:)

+0

*“使用休眠和ehcache”* ...它与当前问题 – ben75

回答

0

减少数据有意义的金额:

  • ,而不是在固定的时间间隔,手表发送数据换位置。
  • 使位置改变阈值速度依赖型;在高速公路行驶时,一英里可能足够准确,而在城市驾驶中,您可能需要将分辨率降至100码。
  • 收集在Android应用数据点,并把它插它。如果你在两个城市之间划一条直线,那么没有理由报告所有数百个中间点,而只是报告终点。
+0

谢谢@ 323go无关。那又如何实现呢?这是否意味着我需要使用谷歌地图道路API来实现速度限制和快速道路功能?我研究过它,它只限于一个请求中的100分,并且是有偿的。 –

+0

你不需要任何服务来确定速度 - 'hasSpeed()'和'getSpeed()'是你的朋友。您不需要捕捉道路......只需在任意点之间使用线性回归,直到偏差足够低。可能需要一点修补。 – 323go

相关问题