确定MKRoutestep何时结束

3
我正在尝试使用MKDirections API在iOS中实现逐步导航系统。我能够获取路线的方向并在地图上绘制折线,当导航开始时,应用程序使用Steps数组中的MKRouteStep对象显示指示。现在的问题是,由于MKRouteStep对象中的距离是用户在遍历步骤路径时覆盖的距离,因此我无法确定如何计算这个距离。是否有任何方法可以计算这个距离?目前,我正在计算两个坐标之间的距离,即上次显示指令时的坐标和用户当前位置之间的距离,如果这个距离等于MKRouteStep中提到的距离,则会显示下一个指令,这会延迟向用户发送指令。
如果有办法确定MKRouteStep结束的坐标或区域,我就可以计算出用户是否在该区域内,然后显示下一个指令。也许这种方法可行,您有什么想法?但是,我该如何从MKRouteStep的折线数组中知道MKRouteStep结束的坐标或区域?
如果有其他更好的解决方案,请建议一下。非常感谢您的帮助。
谢谢。
1个回答

7

由于没有人回答我的问题,我自己回答了它,希望能帮助到需要相同帮助的人。

因此,我们可以使用MKRouteStep提供的折线数组的最后一个坐标来计算何时显示下一条指令,而不是使用MKRouteStep的距离值。例如:

MKMapPoint mapPointForEndOfRouteStep = routeStep.polyline[routeStep.polyline.pointCount - 1];

现在,您可以在周围创建一个区域,并检查您当前位置是否位于该区域内。


嗨@Milan,感谢您的帖子。正如您所知,这不是一个非常热门的话题,我正在努力理解这些方向。我可以请您发布一点您的代码吗?例如,使用Swift 2,我无法创建此mapPointForEndOfRouteStep变量。 - Quentin Malgaud
如果用户的位置不正好在多边形上,而是稍微离开了路径,可能大约0.01米。在这种情况下,我猜测检查当前位置是否位于该区域内将始终为false。 - Wasim Ahmed
@milan 你是使用区域监控来实现这个功能的吗?还是在 didUpdateLocations 中自己检查用户当前位置是否在该区域内?如果使用区域监控,你是如何解决可能存在超过20个路线步骤的问题(系统限制监控区域最多为20个)? - Aodh
1
@Aodh,无需进行区域监控,您可以使用当前位置自行检查。 - Milan Agarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接