【发布时间】:2015-04-24 02:15:25
【问题描述】:
我需要一种将 MKUserLocation 转换为 CLLocation 的方法,以便我可以使用 swift 中的 distanceFromLocation 方法快速找到用户位置与另一个预定义 CLLocation 之间的距离。
【问题讨论】:
标签: swift cllocation cllocationdistance mkuserlocation
我需要一种将 MKUserLocation 转换为 CLLocation 的方法,以便我可以使用 swift 中的 distanceFromLocation 方法快速找到用户位置与另一个预定义 CLLocation 之间的距离。
【问题讨论】:
标签: swift cllocation cllocationdistance mkuserlocation
MKUserLocation 有属性 location,恰好是 CLLocation 类型。
但是,您需要先做好几件事。
【讨论】:
我认为您是从 mapView 获取您的 MKUserLocation 对吗?
所以您必须按照以下步骤操作:
实现方法:- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
// Code
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
[userLocation.location distanceFromLocation:_yourOtherLocation];
}
【讨论】:
Xcode 6.4,适用于 iOS 8.4,启用 ARC
这里已经发布了很好的答案;但是,没有人在 swift 中给出具体的例子。这里有几点需要牢记:
MKUserLocation 类定义了一种特定类型的注释,用于标识用户的当前位置。您不直接创建此类的实例。相反,您从应用中显示的地图视图的 userLocation 属性中检索现有的 MKUserLocation 对象。
location 属性是只读的!
var location: CLLocation! { get }
所以使用这个属性可以直接使用 distanceFromLocation:,但是不要使用当前用户的位置,因为它显然会返回 0 米。您很可能必须初始化一个新的 CLLocation 来测量。
func distanceFromLocation(_ location: CLLocation!) -> CLLocationDistance
希望这会有所帮助!干杯。
【讨论】: