

iOS根据两点经纬度坐标计算指南针方位角 - Dast1
source link: https://www.cnblogs.com/Dast1/p/17041011.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在地图导航时,始终保持当前路段竖直超前。
因地图暴露的方法中只有设置地图相对于正北的方向角的方法。因此,需要实现“根据两点经纬度坐标计算指南针方位角”的算法,这样在每次切换路段时,调用算法计算新路段指南针方位角,然后设置地图相对于正北的方向角即可实现需求。
示意图如下:

算法实现原理详见文末引用。下面贴出基于 OC 语言的代码实现。
新建CLLocation 分类方法
#import <CoreLocation/CoreLocation.h>
+ (double)ca_getCompassAngleFromCoor1:(CLLocationCoordinate2D)coor1 coor2:(CLLocationCoordinate2D)coor2 {
double long1 = coor1.longitude;
double lat1 = coor1.latitude;
double long2 = coor2.longitude;
double lat2 = coor2.latitude;
double φ1 = [CLLocation toRadius:lat1];
double φ2 = [CLLocation toRadius:lat2];
double Δλ = [CLLocation toRadius:(long2 - long1)];
double x = cos(φ1) * sin(φ2) - sin(φ1) * cos(φ2) * cos(Δλ);
double y = sin(Δλ) * cos(φ2);
double θ = atan2(y, x);
double bearing = [CLLocation toDegrees:θ];
return bearing;
}
+ (double)toDegrees:(double)radius {
return radius * 180.0 / M_PI;
}
+ (double)toRadius:(double)degree {
return degree * M_PI / 180.0;
}
double bearing = [CLLocation ca_getCompassAngleFromCoor1:(CLLocationCoordinate2DMake(20, 20)) coor2:(CLLocationCoordinate2DMake(20, 140))];
NSLog(@"bearing:%.2f", bearing);
//设置地图方位角...
经测试,上面算法可以满足需求,且效果正确!
作者:Dast1
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
Recommend
-
98
今天获取百度地图数据时候发现其坐标都是类似 12945050.96,4826978.52 这种而非常见的经纬度,之前获取百度外面商家信息时就发现了这个问题但没深入研究,搜索后发现这种表示方法叫做 墨卡托坐标 。不得...
-
63
pyproj是一个非常好用的地图投影和坐标转换库。 pip install pyproj 构造Transformer from pyproj import Transformer transformer = Transformer.from_crs(4326, 32651) transformer = Transformer....
-
20
工具|地址转经纬度坐标的工具上海市新能源汽车公共数据采集与监测研究中心 数据分析师这边介绍一个不写代码就能够实现将文字地址转换成经纬度坐标的实用工具。
-
8
如何使用Python将经纬度坐标转换成地址上海市新能源汽车公共数据采集与监测研究中心 数据分析师利用下面网页可以不写代码实现经纬度坐标转换文字地址
-
12
零代码实现文本地址转经纬度坐标上海市新能源汽车公共数据采集与监测研究中心 数据分析师一、地理编码工具介绍地理编码工具是一款能够让用户在不写代...
-
11
-
6
MySQL以及Java根据经纬度计算距离 球面距离公式 球面距离公式是计算球面上两点间距离的公式。
-
7
坐标边界查询工具:AreaCity-Query-Geometry 本工具核心功能:使用jts库从省市区县乡镇边界数据(
-
5
watchOS 9 的指南针也不显示经纬度了? 海外也是这样的吗? V2EX = way to explore V2EX 是一个关于分享和探索的地方 Sponsored by
-
8
V2EX › WATCH 手表上指南针突然有了经纬度 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK