Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 两个点之间的距离(带CLLOCATIONCOORDIATE2D) 细节_Ios_Ios7_Core Location_Cllocationmanager - Fatal编程技术网

Ios 两个点之间的距离(带CLLOCATIONCOORDIATE2D) 细节

Ios 两个点之间的距离(带CLLOCATIONCOORDIATE2D) 细节,ios,ios7,core-location,cllocationmanager,Ios,Ios7,Core Location,Cllocationmanager,我试图测量地图上两个坐标(经度、纬度)之间的距离。第一个坐标是我的当前位置,它是一个CLLocation,另一个是地图上的一个pin,类型为CLLocationCoordinate2D CLLocationCoordinate2D locationCoordinate; // Set the latitude and longitude locationCoordinate.latitude = [[item objectForKey:@"lat"] doubleValue]; locati

我试图测量地图上两个坐标(经度、纬度)之间的距离。第一个坐标是我的当前位置,它是一个
CLLocation
,另一个是地图上的一个pin,类型为
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
问题 我调用
distance fromLocation
以获取
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上面的回答,这里有一个快速扩展(返回米):


distanceFromLocation方法位于CLLocation类中,它将CLLocation对象作为参数(而不是CLLocationCoordinate2D结构)。这就是错误的意思。是的,我知道我为什么会出现这个错误,但我不知道如何将它转换为工作状态!实际上最好返回一个double,因为
distance fromLocation
的结果是一个CLLocationDistance,它实际上是一个double。