在OBJ-C中,这应该是一个不错的解决方案:
float r_earth = 6378 * 1000; //Work in meters for everything
float dy = 3000; //A point 3km away
float dx = 3000; //A point 3km away
float new_latitude = latitude + (dy / r_earth) * (180 / M_PI);
float new_longitude = longitude + (dx / r_earth) * (180 / M_PI) / cos(latitude * 180/M_PI);
Run Code Online (Sandbox Code Playgroud)
那么,对于距离相对较小(小于 100 公里)的粗略计算,您可以假设每度纬度有 40_000_000/360=111 111 米,每度经度有 111 111*cos(latitude) 米。这是因为米被定义为巴黎子午线的 1/40_000_000 部分;)。
否则,您应该使用大圆距离,如评论中所述。为了获得高精度,您还需要考虑到地球是略扁的椭球体而不是球体。
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |