疯狂试探
- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS(3_0);

常用地图应用的url Scheme:

//百度地图
baidumap
//高德地图
iosamap
//谷歌地图
comgooglemaps
//腾讯地图
qqmap
//其他地图省略
….

苹果地图不需要,iOS API提供了一个跳转打开方法。
注意IOS9之后,plist里面设置url scheme白名单


<key>LSApplicationQueriesSchemes</key><array><string>qqmap</string><string>comgooglemaps</string><string>iosamap</string><string>baidumap</string></array>

在下用的是高德坐标
高德转坐标类型枚举

//        AMapCoordinateTypeBaidu = 0,    ///<Baidu
//        AMapCoordinateTypeMapBar,       ///<MapBar
//        AMapCoordinateTypeMapABC,       ///<MapABC
//        AMapCoordinateTypeSoSoMap,      ///<SoSoMap
//        AMapCoordinateTypeAliYun,       ///<AliYun
//        AMapCoordinateTypeGoogle,       ///<Google
//        AMapCoordinateTypeGPS,          ///<GPS

在下试过转百度用AMapCoordinateTypeBaidu,这样一一对应的方式转,但跳转之后误差很大,后来我试着杂交匹配一下,所有地图使用Google转法最准,所以除高德地图都用了Google转出的坐标

###重点来了!!!!

- (void)pushMapLan:(CGFloat)lan Lon:(CGFloat)lon pointName:(NSString *)title {UIAlertController *alertSheet = [UIAlertController alertControllerWithTitle:title message:@"请选择以下驾车导航方式" preferredStyle:UIAlertControllerStyleActionSheet];//        高德坐标转换百度坐标CLLocationCoordinate2D gps = AMapCoordinateConvert(CLLocationCoordinate2DMake(lan,lon), AMapCoordinateTypeGoogle);
//        --------------------------------------------------if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {NSMutableDictionary *baiduMapDic = [NSMutableDictionary dictionary];baiduMapDic[@"title"] = @"百度地图";NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=北京&mode=driving&coord_type=gcj02",gps.latitude,gps.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];baiduMapDic[@"url"] = urlString;[alertSheet addAction:[UIAlertAction actionWithTitle:baiduMapDic[@"title"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[[UIApplication sharedApplication] openURL:[NSURL URLWithString:baiduMapDic[@"url"]]];}]];}//高德地图if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {NSMutableDictionary *gaodeMapDic = [NSMutableDictionary dictionary];gaodeMapDic[@"title"] = @"高德地图";NSString *urlString = [[NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2",@"导航功能",@"poapoaaldoerccbadersvsruhdk",lan,lon] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];gaodeMapDic[@"url"] = urlString;[alertSheet addAction:[UIAlertAction actionWithTitle:gaodeMapDic[@"title"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[[UIApplication sharedApplication] openURL:[NSURL URLWithString:gaodeMapDic[@"url"]]];}]];}//谷歌地图if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]) {NSMutableDictionary *googleMapDic = [NSMutableDictionary dictionary];googleMapDic[@"title"] = @"谷歌地图";NSString *urlString = [[NSString stringWithFormat:@"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving",@"驾车导航",@"poapoaaldoerccbadersvsruhdk",gps.latitude,gps.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];googleMapDic[@"url"] = urlString;[alertSheet addAction:[UIAlertAction actionWithTitle:googleMapDic[@"title"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapDic[@"url"]]];}]];}//腾讯地图if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmap://"]]) {NSMutableDictionary *qqMapDic = [NSMutableDictionary dictionary];qqMapDic[@"title"] = @"腾讯地图";NSString *urlString = [[NSString stringWithFormat:@"qqmap://map/routeplan?from=我的位置&type=drive&tocoord=%f,%f&to=终点&coord_type=1&policy=0",gps.latitude,gps.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];qqMapDic[@"url"] = urlString;[alertSheet addAction:[UIAlertAction actionWithTitle:qqMapDic[@"title"] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[[UIApplication sharedApplication] openURL:[NSURL URLWithString:qqMapDic[@"url"]]];}]];}NSMutableDictionary *iosMapDic = [NSMutableDictionary dictionary];iosMapDic[@"title"] = @"苹果地图";[alertSheet addAction:[UIAlertAction actionWithTitle:iosMapDic[@"title"] style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {CLLocationCoordinate2D gps = AMapCoordinateConvert(CLLocationCoordinate2DMake(lan,lon), AMapCoordinateTypeGoogle);MKMapItem *currentLoc = [MKMapItem mapItemForCurrentLocation];MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:gps addressDictionary:nil]];toLocation.name = title;NSArray *items = @[currentLoc,toLocation];NSDictionary *dic = @{MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsMapTypeKey : @(MKMapTypeStandard),MKLaunchOptionsShowsTrafficKey : @(YES)};[MKMapItem openMapsWithItems:items launchOptions:dic];}]];[alertSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {}]];[self presentViewController:alertSheet animated:YES completion:nil];}

关于转换坐标,如果你用的是高德坐标系,除了高德地图不用转坐标系外,其他的都以高德sdk里转Google的方式转,保证目的地精确。
其他的就自己探索咯!
建议 第三方的转换方法【github】地址,找不到合适的尝试这个。

IOS 应用内打开三方地图app直接导航(高德坐标)相关推荐

  1. IOS实现应用内打开第三方地图app进行导航

    用过微信的应该都知道这个功能,对方发一个位置给你,点进去地图展示对方跟你的当前位置,界面提供了选择各个地图应用进行导航,更好这次需求也要搞这个功能. 这个功能实现不难,个人感觉比应用内嵌入第三方地图导 ...

  2. iOS应用根据经纬度打开不同地图app进行导航

    现在地图导航已经很普遍了,为自己的项目添加导航功能有两种方法,一种是集成第三方sdk到自己的app上,这个比较复杂,并且会使自己的app变得很大很臃肿.所以,还是选择另一种方式,根据所获取的经纬度,打 ...

  3. Android 打开第三方地图App进行导航

    Ⅰ.前言 接到产品新需求,模仿高德地图APP通过搜索关键词,在地图标识附近区域内 "关键词"所搜到的点,地图和列表之间有抽屉似的效果,具体的看下面效果图.而打开第三方地图APP进行 ...

  4. ionic开发——打开百度地图APP如何传递参数,导航路线

    首先,打开百度地图APP的方法不知道朋友可以看一下这里: <ionic开发--检测是否安装某APP,如果安装打开该APP>http://blog.csdn.net/yu1731013344 ...

  5. 打开第三方地图App

    第一步:判断是否安装地图APP public static String PACKAGENAME_BD = "com.baidu.BaiduMap";//百度地图包名public ...

  6. 简单打开百度地图APP的方法,并可以直接检索出搜索的位置

    方法特别简单,就是一个url http://map.baidu.com/mobile/webapp/place/detail/qt=inf&uid=uid/vt=map url中红色字体的ui ...

  7. Android调用高德地图app语音导航

    直接调用高德地图app进行导航 首先,要先进入高德开放平台,注册登录以后,创建自己的APP,然后会生成appkey 高德开放平台网址: http://lbs.amap.com/ 然后下载jar包导入项 ...

  8. iOS应用内打开App Store应用详情界面

    用iPhone浏览UC浏览器的"应用商店"时,发现可以直接在应用内打开App Store中的应用详情和下载页面.效果如下: 下面来看看怎么实现这个效果吧. 苹果官方文档 " ...

  9. uniapp 打开地图app并导航

    复制即可,已验证是否安装 // 打开的点击事件,传经纬度和地点名 gomapApp(latitude,longitude,name){let url = "";if (plus.o ...

最新文章

  1. centos7下安装docker(11容器操作总结)
  2. 2020 AI前沿交流大会 | 聚焦CV/NLP最新学术及工业界实践
  3. python初始化_Python list初始化
  4. python词汇-基本 Python 词汇
  5. 架构师接龙:百姓网潘晓良VS. 盛大许式伟
  6. 计算机怎么恢复上一步,电脑怎么还原系统 电脑还原系统步骤盘点
  7. Oracle从软件安装到运行的全流程
  8. 2019年,ALEXA将会走向何方?
  9. ECCV 2020 论文大盘点-场景解析篇
  10. Spark Streaming自定义接收器
  11. 速成pytorch学习——10天.训练模型的3种方法
  12. 利用Linux搭建SVN服务器,详细过程
  13. mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
  14. unity图片模糊处理
  15. Xcode8 - apploader 上传失败 - ERROR ITMS-90168: The binary you uploaded was invalid.
  16. cer证书生成以及签名验签详细篇(keytool 命令)
  17. 天载配资关注这个转折点机会
  18. cookie和session的详解与区别
  19. 从非诚勿扰看数据索引,优化代码小妙招
  20. java史上最全面试题(转载于骆昊)

热门文章

  1. 为什么聪明人未能拯救世界?|《流浪地球》冷思考
  2. 《自学是门手艺活》读后感
  3. 高电压超低功耗低压差电压调节器 MST53XXB系列芯片
  4. 论文笔记——C2FNet:Context-aware Cross-level Fusion Network for Camouflaged Object Detection
  5. RMSD与PMSF 解释与区别
  6. linux开放端口和关闭端口
  7. 第二章 局域网技术和组网规范
  8. 服务拆分的设计和思考(B2B 技术共享第九篇)
  9. 哪类数字域名更优秀?数字域名价值高吗?
  10. java实现点歌操作_Java中linked list集合实现KTV点歌台功能