0
double lat1 = coordinate1.latitude * M_1_PI/180;
double lat2 = coordinate2.latitude * M_1_PI/180;
double lon1 = coordinate1.longitude * M_1_PI/180;
double lon2 = coordinate2.longitude * M_1_PI/180;
double r = 6371;
double dlat = lat2 - lat1;
double dlon = lon2 - lon1;
double a = sin(dlat/2) * sin(dlat/2) + cos(lat1) * cos(lat2) * sin(dlon/2) * sin(dlon/2);
double c = 2 * atan2(sqrt(a), sqrt(1-a));
distance = distance + (r * c * 1000);

ここでは、私が使用しているコードであり、ユーザーの最初の場所から新しい場所までの距離を継続的に追加します。plsは私が何か間違ったことをしていてdistance、メートルで取得していると教えてください. 結果はいつもこのようになります。

座標間の元の距離が 10.97 メートルの場合、私にとってはわずか 1.097 メートルでした

4

2 に答える 2

0

CoreLocation メソッドを使用しています。たとえば、このメソッドは、場所の配列と単一の場所の間の最短距離を見つけます。

 + (NSInteger)distanceFrom:(NSArray*)locations toLocation:(CLLocation*)myLocation
{
    if(!locations || !locations.count) return -1;
    NSMutableArray *distance = [NSMutableArray new];
    for (CLLocation *loc in locations)
    {

        float latitudeB = loc.coordinate.latitude;
        float longitudeB = loc.coordinate.longitude;
        CLLocation *locB = [[CLLocation alloc] initWithLatitude:latitudeB  longitude:longitudeB];
        CLLocationDistance distanceBetweenAB = [myLocation distanceFromLocation:locB];
        [distance addObject:@(distanceBetweenAB)];

    }
    int distInt = [[distance valueForKeyPath:@"@min.intValue"] intValue];;
    return distInt;
}
于 2014-09-26T13:50:15.593 に答える