【问题标题】:Identify when MKRoutestep finishes确定 MKRoutestep 何时完成
【发布时间】:2015-08-30 21:56:31
【问题描述】:

我正在尝试使用 MKDirections API 在 iOS 中实现转弯导航系统。我能够获取路线的方向并可以在地图上绘制折线,并且当导航启动时,应用程序开始使用 Steps 数组中的 MKRouteStep 对象显示说明。 现在的问题是,因为 MKRouteStep 对象中的距离是用户在遍历步骤路径时所覆盖的距离,所以我无法确定如何计算该距离。 有没有办法计算这个距离目前我正在计算两个坐标之间的距离,即最后一条指令与用户当前位置显示时的坐标,如果该距离等于 MKRouteStep 中提到的距离,我将显示下一条指令,因为它正在延迟将要交付给用户的指令。

如果有任何方法可以识别此 MKRouteStep 结束的坐标或区域,我可以计算用户是否在该区域中,然后显示下一条指令。可能这可以解决您的想法,但是为此我如何知道此 MKRouteStep 从 MKRouteStep 的折线数组结束的坐标或区域?

请建议是否有任何其他好的解决方案。非常感谢任何帮助。

谢谢。

【问题讨论】:

    标签: ios navigation mapkit directions mkpolyline


    【解决方案1】:

    由于没有人回答我的问题,所以我自己回答,以便它可以帮助寻找相同问题的人。

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

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

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

    【讨论】:

    • 嗨@Milan,谢谢你的帖子。正如您可能知道的那样,这不是一个非常热门的话题,我正在努力解决这些方向。我可以请您发布一些代码吗?例如,使用 swift 2 我无法创建这个 mapPointForEndOfRouteStep 变量。
    • 如果用户的位置不完全在多边形上并且稍微偏离路径,可能在 0.01 米左右。在这种情况下,我猜对当前位置的检查是否在该区域内将始终为假。
    • @milan 您是否为此使用了区域监控,或者您是否只检查自己(在 didUpdateLocations 中)用户的当前位置是否在该区域内?如果使用区域监控,如何解决可能超过 20 个路线步骤的问题(系统限制为 20 个监控区域)。
    • @Aodh 不需要做区域监控,你可以使用你当前的位置自己检查。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 2017-09-09
    相关资源
    最近更新 更多