如何在用户更改位置时生成路径

时间:2016-03-07 18:26:13

标签: android geolocation location

我正在开发一个应用程序,该应用程序需要记录和测量用户的路径。我已经熟悉利用onLocationChanged接收位置更改更新,但我如何使用这些位置点创建完整路径,包含从一个位置到另一个位置的整个行程?

我在想我可以利用每个位置作为一个点传递,并简单地用折线连接所有点,但在我看来,这将是一个奇怪的,稍微丑陋的线(因为位置近似不是'总是非常准确的。)

我的另一个想法是获取用户旅行的每条街道,然后最终将它们连接起来,但我甚至不确定如何执行此操作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最好的方法是对地图进行某种表示, 然后将您最近的位置保存在数据结构中(例如,通过仅保留固定增量中的位置来省略太近的位置)。 然后,您可以将点匹配到最近的道路,并计算它们在它们上的投影,以在地图上创建匹配的路径。

由于我之前已经实现了这一点,我可以说它涉及相当多的工作,将地图表示为图形(比如使用OSM),以及几何查询的知识(在PL / PGSQL中可能是我们谈论OSM)。 三角计算本身非常简单,可以在网上找到(例如给定线上点的投影)。 为了获得高质量的结果,您还必须处理沿途的进度(即,由于GPS信号错误,导致您“向后”而不是“前进”的过滤gps点。)

最好从工作POC开始: 取决于您的地图实施(Google / OSM) - 选择某种在线路由提供商(http://wiki.openstreetmap.org/wiki/Routing/online_routers)。 然后,您可以在之前存储的位置之间发送小型导航请求。由于它们的delta很小,您可能会在路上获得相关的匹配路径。

缺点:您依赖于外部服务及其配额,并且无法在不付款的情况下为许多客户提供服务。

优势:您可以在很短的时间内(〜小时)建立一个有效的POC

无论哪种方式,您都将受到指定地图的质量限制(例如更新道路,转弯限制),这将决定结果的正确性。