应用内调起地图导航

// 包行目的地经纬度,名称等信息的模型
DestionationModel * destionationM ;

/** 开始高德导航*/
- (void)startGaodeNavi {
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
        NSString *urlStr = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=本应用名称&dlat=%@&dlon=%@&dname=%@&dev=0&t=0", destionationM .latitude , destionationM.longitude, destionationM.name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [self openMapNaviURL:urlStr];
    }else {
        [ProgressHUD showWithMessage:@"未安装高德地图" dismissAfterTimeInterval:2];
    }
}

/** 开始百度导航*/
- (void)startBaiduNavi {
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]) {
        NSString *urlStr = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%@,%@|name:%@&coord_type=gcj02&mode=driving", destionationM.latitude , destionationM.longitude, destionationM.name] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        [self openMapNaviURL:urlStr];
    }else {
        [ProgressHUD showWithMessage:@"未安装百度地图" dismissAfterTimeInterval:2];
    }
}

- (void)openMapNaviURL:(NSString *)urlStr {
    if (IOS10_OR_LATER) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr] options:@{} completionHandler:nil];
    }else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
    }
    if (![[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlStr]]) {
        [ProgressHUD showWithMessage:@"导航失败" dismissAfterTimeInterval:2];
    }
}

上述代码中的导航中的URL字符串iosamap://pathbaidumap://map/direction实现的是路径规划,用户可以在多种出行方式中做选择,实现效果如下图所示:
如果已经选定交通工具直接导航到目的地,则可将对应的URL字符串更换为iosamap://navibaidumap://map/navi

其中高德地图坐标转换成百度地图坐标可参考百度文档中的coord_type字段
应用内调起地图导航_第1张图片
百度路径规划.jpeg
应用内调起地图导航_第2张图片
高德路径规划.jpeg

参考文档:
高德地图接口文档
百度地图接口文档

你可能感兴趣的:(应用内调起地图导航)