// 包行目的地经纬度,名称等信息的模型
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://path
和baidumap://map/direction
实现的是路径规划,用户可以在多种出行方式中做选择,实现效果如下图所示:
如果已经选定交通工具直接导航到目的地,则可将对应的URL字符串更换为iosamap://navi
和baidumap://map/navi
其中高德地图坐标转换成百度地图坐标可参考百度文档中的coord_type
字段


网友评论