如何在 iOS 中使用 corelocation 来判断用户是不是越过下一个回合?
Posted
技术标签:
【中文标题】如何在 iOS 中使用 corelocation 来判断用户是不是越过下一个回合?【英文标题】:How to find out whether the user crossed the next turn or not using corelocation in iOS?如何在 iOS 中使用 corelocation 来判断用户是否越过下一个回合? 【发布时间】:2015-04-06 07:46:35 【问题描述】:我已经根据 Google 地图 API 返回的纬度和经度在 GMSMapview 上绘制了路径,并且我允许用户使用此路径开始导航。 在这里我的疑问是我怎么知道用户是否在下一回合越过以及如何确保用户遵循相同的路径(由我绘制)?
例如,如果我从 google apis 获得 4 圈 [(lat1,long1), (lat2, long2), (lat3,long3), (lat4,long4),则用户越过第一圈的那一刻 (lat1,long1 ) 我需要显示一个 toast,假设如果采取直根(错误的根)而不是越过转弯我需要显示警告 toast。
我只是猜测可能是通过跟踪用户的前进方向我们可以实现这一点,如果我错了,请纠正我。
谢谢。
【问题讨论】:
我认为CLLocationManagerDelegate
中的func locationManager(manager: CLLocationManager!, didUpdateHeading newHeading: CLHeading!)
方法将帮助您实现这一目标。
但只要设备标题更新,就会调用此方法。我的要求是..我只需要知道用户标题何时更新,而不是设备标题。
【参考方案1】:
你的路径是坐标数组,对吧?使用 - distanceFromLocation: 方法来查看用户的位置是否足够接近数组中的任何坐标。例如,一旦用户距离阵列中的任何和所有坐标超过 100 米 - 你就知道用户不在路径上。
然后,如果您可以确定哪些确切的坐标是“转弯”,您可以跟踪用户越来越接近转弯,一旦用户开始远离转弯点,同时仍然留在您的路径上 - 他已经转弯了。
【讨论】:
以上是关于如何在 iOS 中使用 corelocation 来判断用户是不是越过下一个回合?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 coreLocation (iOS/Swift) 读取完整地址
如何使用 CoreLocation 获取多个 iBeacon?