如何有效地存储来自 android 应用程序的 LatLng 路由路径
How to efficiently store the LatLng route path coming from android application
我正在开发一个 android 应用程序,它可以跟踪车辆的位置并在单击按钮 "Start vehicle" 后每秒向另一个 spring 网络应用程序发送一个 LatLng 点。
我需要存储此位置以便在 google 地图中呈现以在地图上显示车辆的实时位置。它工作正常,但是,我必须存储所有获得的点,以便在驾驶员从应用程序中单击 "Stop vehicle" 时显示经过的完整路线。
我已经应用了以下策略,但似乎都效率低下且太耗资源:
- 当每个当前位置请求到达时,将位置存储在服务器端的列表中,并将其保存在 servletContext 中。继续根据收到的每个点更新列表。问题:即使是大约 1 小时的旅程,也会收到太多点,它们会形成一个非常大的列表,消耗大量内存。如果服务器关闭或发生崩溃,servletContext 就会消失,整个数据也会消失。
- 将位置存储在数据库中的 table 行中(使用 PostgreSQL)。问题:条目应该何时保存在数据库中?然后进行数据库事务 + 消耗那么多数据库 space?很贵吧?
- 不要在服务器端存储所有位置,只为实时地图保留当前位置。而是在 android 应用程序端保留位置列表,并在驾驶员选择停车时将其发送到服务器。问题:从服务器端听起来很公平,但是 android phone 是否能够处理同样的大列表,然后将其发送到服务器的调用中?
- 使用休眠和 ehcache。我应该考虑吗?
我一直在研究如何通过占用最少的资源并当然降低生产服务器成本来有效地做到这一点。
对于Android、服务器和整个方法,我们将不胜感激:)
将您的数据减少到有意义的数量:
- 不要以固定的时间间隔发送数据,而是注意位置变化。
- 使位置变化阈值与速度相关;在高速公路上,一英里可能足够准确,而在城市驾驶中,您可能需要低至 100 码的分辨率。
- 在 android 应用程序中收集您的数据点,并对其进行插值。如果您在两个城市之间行驶一条直线,则没有理由报告所有数百个中间点,而只报告终点。
我正在开发一个 android 应用程序,它可以跟踪车辆的位置并在单击按钮 "Start vehicle" 后每秒向另一个 spring 网络应用程序发送一个 LatLng 点。 我需要存储此位置以便在 google 地图中呈现以在地图上显示车辆的实时位置。它工作正常,但是,我必须存储所有获得的点,以便在驾驶员从应用程序中单击 "Stop vehicle" 时显示经过的完整路线。
我已经应用了以下策略,但似乎都效率低下且太耗资源:
- 当每个当前位置请求到达时,将位置存储在服务器端的列表中,并将其保存在 servletContext 中。继续根据收到的每个点更新列表。问题:即使是大约 1 小时的旅程,也会收到太多点,它们会形成一个非常大的列表,消耗大量内存。如果服务器关闭或发生崩溃,servletContext 就会消失,整个数据也会消失。
- 将位置存储在数据库中的 table 行中(使用 PostgreSQL)。问题:条目应该何时保存在数据库中?然后进行数据库事务 + 消耗那么多数据库 space?很贵吧?
- 不要在服务器端存储所有位置,只为实时地图保留当前位置。而是在 android 应用程序端保留位置列表,并在驾驶员选择停车时将其发送到服务器。问题:从服务器端听起来很公平,但是 android phone 是否能够处理同样的大列表,然后将其发送到服务器的调用中?
- 使用休眠和 ehcache。我应该考虑吗?
我一直在研究如何通过占用最少的资源并当然降低生产服务器成本来有效地做到这一点。
对于Android、服务器和整个方法,我们将不胜感激:)
将您的数据减少到有意义的数量:
- 不要以固定的时间间隔发送数据,而是注意位置变化。
- 使位置变化阈值与速度相关;在高速公路上,一英里可能足够准确,而在城市驾驶中,您可能需要低至 100 码的分辨率。
- 在 android 应用程序中收集您的数据点,并对其进行插值。如果您在两个城市之间行驶一条直线,则没有理由报告所有数百个中间点,而只报告终点。