确定 MKRoutestep 何时完成
Posted
技术标签:
【中文标题】确定 MKRoutestep 何时完成【英文标题】:Identify when MKRoutestep finishes 【发布时间】:2015-08-30 21:56:31 【问题描述】:我正在尝试使用 MKDirections API 在 ios 中实现转弯导航系统。我能够获取路线的方向并可以在地图上绘制折线,并且当导航启动时,应用程序开始使用 Steps 数组中的 MKRouteStep 对象显示说明。 现在的问题是,因为 MKRouteStep 对象中的距离是用户在遍历步骤路径时所覆盖的距离,所以我无法确定如何计算该距离。 有没有办法计算这个距离? 目前我正在计算两个坐标之间的距离,即最后一条指令与用户当前位置显示时的坐标,如果该距离等于 MKRouteStep 中提到的距离,我将显示下一条指令,因为它正在延迟将要交付给用户的指令。
如果有任何方法可以识别此 MKRouteStep 结束的坐标或区域,我可以计算用户是否在该区域中,然后显示下一条指令。可能这可以解决您的想法,但是为此我如何知道此 MKRouteStep 从 MKRouteStep 的折线数组结束的坐标或区域?
请建议是否有任何其他好的解决方案。非常感谢任何帮助。
谢谢。
【问题讨论】:
【参考方案1】:由于没有人回答我的问题,所以我自己回答,以便它可以帮助寻找相同问题的人。
因此,我们可以使用 MKRouteStep 提供的折线数组的最后一个坐标,而不是使用 MKRouteStep 的距离值来计算何时显示下一条指令。例如:
MKMapPoint mapPointForEndOfRouteStep = routeStep.polyline[routeStep.polyline.pointCount - 1];
现在您可以在它周围创建一个区域,并检查您当前的位置是否在该区域内。
【讨论】:
嗨@Milan,谢谢你的帖子。正如您可能知道的那样,这不是一个非常热门的话题,我正在努力解决这些方向。我可以请您发布一些代码吗?例如,使用 swift 2 我无法创建这个 mapPointForEndOfRouteStep 变量。 如果用户的位置不完全在多边形上并且稍微偏离路径,可能在 0.01 米左右。在这种情况下,我猜对当前位置的检查是否在该区域内将始终为假。 @milan 您是否为此使用了区域监控,或者您是否只检查自己(在 didUpdateLocations 中)用户的当前位置是否在该区域内?如果使用区域监控,如何解决可能超过 20 个路线步骤的问题(系统限制为 20 个监控区域)。 @Aodh 不需要做区域监控,你可以使用你当前的位置自己检查。以上是关于确定 MKRoutestep 何时完成的主要内容,如果未能解决你的问题,请参考以下文章