0

您好,使用以下方法来找出我当前位置与存储在 NSMutableArray 值中的位置(纬度和经度)之间的距离。

但是距离错误..请帮忙..

我的代码

    -(void)getDistancetoShow:(NSMutableArray *)newArray{

    CLLocationCoordinate2D coordinateUser = [self getLocation];


    float _lat,_long;


  first_Loc = [[CLLocation alloc] initWithLatitude:coordinateUser.latitude longitude:coordinateUser.longitude];

    for(int p=0;p<[[newArray1 valueForKey:@"Name"] count];p++){

        _lat=[[[newArray1 valueForKey:@"Latitude"] objectAtIndex:p]floatValue];
         _long=[[[newArray1 valueForKey:@"Longitude"] objectAtIndex:p]floatValue];
        second_loc=[[CLLocation alloc] initWithLatitude:_lat longitude:_long];


        showDistance=[second_loc distanceFromLocation:first_Loc]/1000;

        [distanceToDispaly addObject:[NSString stringWithFormat:@"%.2f KM",showDistance]];
    }

     NSLog(@"first=%@, second=%@", first_Loc, second_loc);


}

数组中的纬度

( "47.0735010448824", "47.0564688100431", " 47.0582514311038", "47.0587640538326", "47.0569233603454", "47.0541853132569", "47.0542029215138", "47.0544259594592", "47.0560264547367", " 47.0576532159776", " 47.0550023679218", "47.0342030007379", " 47.0746263896213", " 47.0740256635512", "47.0524765957921", "47.0606287049051", "47.0539691521825", "47.0542799159057", "47.0651001682846", "47.0536948902097", "47.0525973335309", "47.0389265414812", "47.0761811267051", "47.0668801601942", "47.0614859079241" ,“47.0579433468181”、“47.0718998779465”)

和数组中的经度

( "21.9154175327011", "21.9312065669748", "21.9337414545594", " 21.9346772505188", " 21.9300587945685", "21.9363460105132", "21.9362081709222", "21.9343042603097", "21.939485335992", "21.9320057169724", "21.9300799002643", "21.9485373571669", " 21.9310667367526", "21.9318507902135", "21.9192195298473", "21.9195273899529", "21.9329595191441", "21.9292015418841", "21.9219452321208", "21.9098849252041", "21.9074768948561", "21.9424499491422", "21.9151458954504", "21.9304346568769", "21.9305973807911" ,“21.9331511189507”、“21.9159872752442”)

但真正的距离就像盯着 9* * ** 但现在开始 5* **

4

3 回答 3

1

CLLocation 为您提供两个地方之间的乌鸦(直线)距离。我认为你正在获得乌鸦的距离。

首先获取两个地方的坐标并找到它们之间的距离。然后搜索这两个坐标之间的乌鸦距离。

希望这会有所帮助

于 2014-01-27T07:30:04.463 回答
1

获得这两个坐标后,您可以使用这段代码(取自此处)计算它们之间的距离:

- (NSNumber*)calculateDistanceInMetersBetweenCoord:(CLLocationCoordinate2D)coord1 coord:(CLLocationCoordinate2D)coord2 {
    NSInteger nRadius = 6371; // Earth's radius in Kilometers
    double latDiff = (coord2.latitude - coord1.latitude) * (M_PI/180);
    double lonDiff = (coord2.longitude - coord1.longitude) * (M_PI/180);
    double lat1InRadians = coord1.latitude * (M_PI/180);
    double lat2InRadians = coord2.latitude * (M_PI/180);
    double nA = pow ( sin(latDiff/2), 2 ) + cos(lat1InRadians) * cos(lat2InRadians) * pow ( sin(lonDiff/2), 2 );
    double nC = 2 * atan2( sqrt(nA), sqrt( 1 - nA ));
    double nD = nRadius * nC;
    // convert to meters
    return @(nD*1000);
}

希望这可以帮助!

于 2014-01-27T07:38:31.450 回答
0

Swift要在 reduce 方法下获得与使用中的点数组的距离。

locations是类型数组CLLocation

 let calculatedDistance = locations.reduce((0, locations[0])) { ($0.0 + $0.1.distance(from: $1), $1)}.0
于 2018-04-26T12:51:54.723 回答