【问题标题】:Get the GPS coordinate given the current location, bearing and distance获取给定当前位置、方位和距离的 GPS 坐标
【发布时间】:2012-05-18 08:40:38
【问题描述】:

我正在尝试根据当前位置、方位和距离获取 GPS 坐标。

但我找不到任何与 cocoa-touch 相关的内容。

我在这里找到了公式Get lat/long given current point, distance and bearing

iOS 有没有更简单的方法?

提前致谢。

【问题讨论】:

标签: cocoa-touch gps cllocation


【解决方案1】:

将链接中的代码转换为 Objective-C。

- (double)degreesToRadians:(double)degrees {
    return degrees * M_PI / 180;
}

- (double)radiansToDegrees:(double)radians {
    return radians * 180/ M_PI;
}


- (CLLocationCoordinate2D)remoteCoordinate:(CLLocationCoordinate2D)localCoordinate withDistance:(double)distance withBearing:(double)bearing {

    double earthRadius = 6378.1;         // Radius of Earth in kilometres.

    double rLat1 = [self degreesToRadians:localCoordinate.latitude];     // Convert latitude to radians
    double rLon1 = [self degreesToRadians:localCoordinate.longitude];    // Convert longitude to radians

    double rLat2 = asinl( sinl(rLat1) * cosl(distance / earthRadius) + cosl(rLat1) * sinl(distance / earthRadius) * cosl(bearing) );
    double rLon2 = rLon1 + atan2l( sinl(bearing) * sinl(distance/earthRadius) * cosl(rLat1), cosl(distance/earthRadius) - sinl(rLat1) * sinl(rLat2) );

    double dLat2 = [self radiansToDegrees:rLat2];        // Convert latitude to degrees
    double dLon2 = [self radiansToDegrees:rLon2];        // Convert longuitude to degrees

    return CLLocationCoordinate2DMake(dLat2, dLon2);
}

【讨论】:

  • 地球半径不是6378公里,而是6371公里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 2011-05-30
  • 2016-09-19
  • 2011-11-05
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多