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);

这是我正在使用的代码,它将不断地为用户的新位置从他的第一个位置添加距离。请告诉我我做错了什么,我得到了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 回答
0

这不会使 semse m_1_pi = 1/pi,

您将经度除以度数 / (180 *pi)

它应该是度数 *pi / 180 或度数 *M_PI / 180.0 会给你弧度

于 2016-02-02T19:12:33.020 回答