美文网首页
iOS 调用苹果自带地图导航不准确问题解决

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

作者: 赵哥窟 | 来源:发表于2018-11-22 11:47 被阅读535次

    因为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。直接上代码

    // 苹果地图导航
    + (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];
    }
    

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

    //将GPS转成高德坐标
    CLLocationCoordinate2D amapcoord = AMapCoordinateConvert(loc, AMapCoordinateTypeBaidu);
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/ltxlqqtx.html