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

How To Generate A Path As User Changes Location

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

我在想我可以利用每个传递的位置作为一个点,然后简单地用一条折线连接所有的点,但在我看来这将是一条奇怪且略显丑陋的线(因为位置近似值不是' t 总是超级准确)。

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

有什么想法吗?

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

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

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

缺点:你依赖外部服务及其配额,不付费就无法服务很多客户。

优点:您可以在短时间内(~几小时)构建一个可用的 POC

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