rak*_*hNS 34 iphone core-location ios
我从文档中知道,我们可以CLLocation使用函数找到两点之间的距离distanceFromLocation:.但我的问题是我没有CLLocation数据类型与我,我有CLLocationCoordinate2D点.那么如何找到两个CLLocationCoordinate2D点之间的距离.我看过帖子但对我没用.
Apu*_*urv 35
你应该创建一个CLLocation对象,
- (id)initWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude;
Run Code Online (Sandbox Code Playgroud)
然后,您应该能够使用计算距离
[location1 distanceFromLocation:location2];
Run Code Online (Sandbox Code Playgroud)
Val*_*der 30
如果您可以在点之间获得距离,那么
CLLocationCoordinate2D coordinate1 = <some value>
CLLocationCoordinate2D coordinate2 = <some value>
…
MKMapPoint point1 = MKMapPointForCoordinate(coordinate1);
MKMapPoint point2 = MKMapPointForCoordinate(coordinate2);
CLLocationDistance distance = MKMetersBetweenMapPoints(point1, point2);
Run Code Online (Sandbox Code Playgroud)
将返回两点之间的距离.不需要创造CLLocation给定的CLLocationCoordinate2D.此定义自iOS 4.0起可用
Avi*_*oss 25
斯威夫特4:
extension CLLocation {
/// Get distance between two points
///
/// - Parameters:
/// - from: first point
/// - to: second point
/// - Returns: the distance in meters
class func distance(from: CLLocationCoordinate2D, to: CLLocationCoordinate2D) -> CLLocationDistance {
let from = CLLocation(latitude: from.latitude, longitude: from.longitude)
let to = CLLocation(latitude: to.latitude, longitude: to.longitude)
return from.distance(to)
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*uan 18
Swift4:结合以上思路
extension CLLocationCoordinate2D {
//distance in meters, as explained in CLLoactionDistance definition
func distance(from: CLLocationCoordinate2D) -> CLLocationDistance {
let destination=CLLocation(latitude:from.latitude,longitude:from.longitude)
return CLLocation(latitude: latitude, longitude: longitude).distance(from: destination)
}
}
Run Code Online (Sandbox Code Playgroud)
let point1 = MKMapPointForCoordinate(myLocation)
let point2 = MKMapPointForCoordinate(friendLocation)
let distance = MKMetersBetweenMapPoints(point1, point2)/1000
let distanceStr = NSString(format: "%.3f", distance)
Run Code Online (Sandbox Code Playgroud)
简单版的Valleri的答案.除以1000得到KM,然后转换为字符串.
| 归档时间: |
|
| 查看次数: |
21428 次 |
| 最近记录: |