我需要一种方法将MKUserLocation转换为CLLocation,以便我可以使用swift中的distanceFromLocation方法找到用户位置与另一个预定义CLLocation之间的距离。
答案 0 :(得分:4)
MKUserLocation具有属性位置,恰好是CLLocation类型。
但是,您需要先做好几件事。
答案 1 :(得分:1)
我认为您正在从mapView获取MKUserLocation吗?
所以你必须按照以下步骤操作:
实施方法:- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
// Code
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {
[userLocation.location distanceFromLocation:_yourOtherLocation];
}
答案 2 :(得分:0)
Xcode 6.4,适用于iOS 8.4,启用了ARC
这里已经发布了很好的答案;然而,没有一个在swift中给出具体的例子。以下是一些需要注意的事项:
MKUserLocation类定义标识用户当前位置的特定类型的注释。您不直接创建此类的实例。而是从应用程序中显示的地图视图的userLocation属性中检索现有的MKUserLocation对象。
位置属性是只读的!
var location: CLLocation! { get }
因此,使用此属性可以直接使用distanceFromLocation:但不要使用当前用户的位置,因为它显然会返回0米。您很可能必须初始化要测量的新CLLocation。
func distanceFromLocation(_ location: CLLocation!) -> CLLocationDistance
希望这有帮助!欢呼声。