[英]Distance between 2 points with CLLocationCoordinate2D
我正在尝试测量地图上两个坐标(经度,纬度)之间的距离。 第一个坐标是我当前的位置 ,它是一个CLLocation
,另一个坐标是地图上的一个类型为CLLocationCoordinate2D
的引脚。
我调用distanceFromLocation
来获取CLLocation
当前位置,但它表示来自CLLocationCoordinate2D
接收器类型不正确。
CLLocationCoordinate2D locationCoordinate;
// Set the latitude and longitude
locationCoordinate.latitude = [[item objectForKey:@"lat"] doubleValue];
locationCoordinate.longitude = [[item objectForKey:@"lng"] doubleValue];
CLLocationDistance dist = [locationCoordinate distanceFromLocation:locationManager.location.coordinate]; // bad receiver type from CLLocationCoordinate2D
我想以公制单位找到这两个坐标之间的距离,我知道类型不匹配,但是如何转换它们以便我可以找到这两个节点之间的距离?
使用以下方法查找两个位置之间的距离
-(float)kilometersfromPlace:(CLLocationCoordinate2D)from andToPlace:(CLLocationCoordinate2D)to {
CLLocation *userloc = [[CLLocation alloc]initWithLatitude:from.latitude longitude:from.longitude];
CLLocation *dest = [[CLLocation alloc]initWithLatitude:to.latitude longitude:to.longitude];
CLLocationDistance dist = [userloc distanceFromLocation:dest]/1000;
//NSLog(@"%f",dist);
NSString *distance = [NSString stringWithFormat:@"%f",dist];
return [distance floatValue];
}
例如:
+(double)distanceFromPoint:(double)lat lng:(double)lng
{
CLLocation *placeLocation = [[CLLocation alloc] initWithLatitude:lat longitude:lng];
CLLocationCoordinate2D usrLocation = locationManager.location;
CLLocation * userLocation = [[CLLocation alloc] initWithLatitude:usrLocation.latitude longitude:usrLocation.longitude];
double meters = [userLocation distanceFromLocation:placeLocation];
return meters;
}
尝试将CLLocationCoordinate2D
转换为CLLocation
,
使用,创建一个CLLocation
对象,
-(id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude
基于@ manujmv上面的答案,这里是一个Swift扩展(返回米):
import Foundation
import CoreLocation
extension CLLocationCoordinate2D {
func distanceTo(coordinate: CLLocationCoordinate2D) -> CLLocationDistance {
let thisLocation = CLLocation(latitude: self.latitude, longitude: self.longitude)
let otherLocation = CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)
return thisLocation.distanceFromLocation(otherLocation)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.