前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS 调用苹果自带地图导航不准确问题解决

iOS 调用苹果自带地图导航不准确问题解决

作者头像
赵哥窟
发布2018-12-14 17:10:30
3.7K0
发布2018-12-14 17:10:30
举报
文章被收录于专栏:日常技术分享日常技术分享

因为App需要调用第三方导航软件导航,后台返回的GPS,但是发现调用高德导航就要准确一些,调用苹果自带的地图导航偏差很大,查阅了相关资料如下

高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系 百度地图使用的是BD-09坐标系 苹果自带地图在国内使用高德提供的数据,所以使用的是GCJ-02坐标系

找到原因后需要把gps转换为高德坐标系,在网上找了gps转换GCJ02的一些方法。转化后导航偏差也有点大。所以直接使用高德提供的Api有两种 一种是调在线Api: https://lbs.amap.com/api/webservice/guide/api/convert/ 二种是调用SDK方法 https://lbs.amap.com/api/ios-sdk/guide/computing-equipment/amap-calculate-tool

我直接使用调用SDK。直接上代码

代码语言:javascript
复制
// 苹果地图导航
+ (void)navAppleMap:(NSString *)lat lng:(NSString *)lng
{
    //坐标转换
    CLLocationCoordinate2D loc = CLLocationCoordinate2DMake(lat.doubleValue, lng.doubleValue);
    //将GPS转成高德坐标
    CLLocationCoordinate2D amapcoord = AMapCoordinateConvert(loc, AMapCoordinateTypeGPS);
    //用户位置
    MKMapItem *currentLoc = [MKMapItem mapItemForCurrentLocation];
    //终点位置
    MKMapItem *toLocation = [[MKMapItem alloc]initWithPlacemark:[[MKPlacemark alloc]initWithCoordinate:amapcoord addressDictionary:nil] ];
    
    NSArray *items = @[currentLoc,toLocation];
    
    NSDictionary *dic = @{
                          MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
                          MKLaunchOptionsMapTypeKey : @(MKMapTypeStandard),
                          MKLaunchOptionsShowsTrafficKey : @(YES)
                          };
    
    [MKMapItem openMapsWithItems:items launchOptions:dic];
}

如果后台返回的是百度经纬度,使用以下方法

代码语言:javascript
复制
//将GPS转成高德坐标
CLLocationCoordinate2D amapcoord = AMapCoordinateConvert(loc, AMapCoordinateTypeBaidu);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档