在iOS开发地图模块中,有需要用到导航的功能,尤其类似一些送快递、外卖等软件,除了需要展示路线到地图中,还需要有一个导航按钮。一般导航功能分两类:一类是在本APP内部调用高德API的导航页面,即在APP内部集成导航模块,此类导航页面可以自己定制界面,但基本功能都是调用高德封装好的方法即可。另一类就是点击导航按钮,跳转到手机内装的地图类APP里去进行导航。

今天我要说的是第二类,点击跳转到地图APP里去导航。因为第一类导航,在对应的API文档和Demo里已经有详细的文档来说明如何集成。

下面是点击导航按钮需要的代码:

//MARK:导航
- (void)navBtnClicked:(UIButton *)sender
{// 后台返回的目的地坐标是百度地图的// 百度地图与高德地图、苹果地图采用的坐标系不一样,故高德和苹果只能用地名不能用后台返回的坐标CGFloat latitude  = (CGFloat)endLat;  // 纬度CGFloat longitude = (CGFloat)endLng; // 经度
//    __block NSString *address = @"";// 送达地址self.address = [[NSString alloc] init];CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:(CLLocationDegrees)longitude];CLGeocoder * geocoder = [[CLGeocoder alloc]init];[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {if (error == nil && [placemarks count] > 0) {//这时的placemarks数组里面只有一个元素CLPlacemark * placemark = [placemarks firstObject];NSLog(@"%@",placemark.addressDictionary); //根据经纬度会输出该经纬度下的详细地址  国家 地区 街道 之类的self.address = [NSString stringWithFormat:@"%@",placemark.addressDictionary[@"FormattedAddressLines"][0]] ;[self openAlert];}}];}
- (void)openAlert
{CGFloat latitude  = (CGFloat)endLat;  // 纬度CGFloat longitude = (CGFloat)endLng; // 经度CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:(CLLocationDegrees)longitude];// 打开地图的优先级顺序:百度地图->高德地图->苹果地图if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://"]]) {// 高德地图// 起点为“我的位置”,终点为后台返回的addressNSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=applicationName&sid=BGVIS1&sname=%@&did=BGVIS2&dname=%@&dev=0&t=0",@"我的位置",self.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:nil completionHandler:^(BOOL success) {}];}else if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {// 百度地图// 起点为“我的位置”,终点为后台返回的坐标NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=%f,%f&mode=riding&src=快健康快递", latitude, longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL *url = [NSURL URLWithString:urlString];[[UIApplication sharedApplication] openURL:url options:nil completionHandler:^(BOOL success) {}];}else if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"http://maps.apple.com"]]){// 苹果地图// 起点为“我的位置”,终点为后台返回的addressNSString *urlString = [[NSString stringWithFormat:@"http://maps.apple.com/?daddr=%@",self.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:nil completionHandler:^(BOOL success) {}];}else{// 快递员没有安装上面三种地图APP,弹窗提示安装地图APPUIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"请安装地图APP" message:@"建议安装高德地图APP" preferredStyle:UIAlertControllerStyleAlert];[self presentViewController:alertVC animated:NO completion:nil];}
}

以上就是设置导航的一种方法,此外,不愿意敲代码的同学可以直接在info.plist里直接配置几种地图APP的跳转url,这种方法可以达到以上同样的效果。

另外,这种调用方式的一个问题我还未解决,就是在直接跳转高德APP时,终点位置首先会弹出一个位置列表让你点选导航终点,有时项目可能不需要这种周边搜索选择终点,但是我还未找到方法如何避免这个搜索列表的展示,知道解决办法的大神希望帮忙解答一下。

iOS调用高德地图导航相关推荐

  1. iOS—— 调用高德地图SDK

    iOS-- 调用高德地图SDK 我们在许多App中可以发现关于地图的调用以及定位等等功能都是什么重要的,比如滴滴打车,美团外卖等等都是十分依赖于地图的.所以我们就应该学会如和去调用地图.本周我就学习了 ...

  2. iOS——调用高德地图SDK

    当今的app中,地图随处可见.不管是美团.饿了吗的骑手位置,还是共享单车的扫车.还车,都少不了地图的使用.小组的项目计划也有地图部分,这里记录一下调用高德地图sdk的过程. 官方指南 通过CocoaP ...

  3. iOS调用高德地图SDK

    准备工作: 安装CocoaPods 使用下载第三方库相同的方法下载SDK 方法如下: (1)打开终端,cd 文件路径 进入到所创建的项目文件中 (2)输入pod init为该项目创建Podfile文件 ...

  4. 高德地图导航和标注,通过调用高德APP实现呢

    在调用高德地图APP提供坐标定位位置,若果是需要导航的话可以参考下面1,如果还想知道路线.周边.导航请调用标注来实现,标注包含导航功能. 1 导航(调用显示导航图) 一种是通过高德提供的SDK实现,另 ...

  5. webapp通过点击调用高德地图或百度地图导航

    webapp通过点击调用高德地图或百度地图导航 // 高德地图 <a :href="'https://uri.amap.com/marker?position='+经度+','+纬度+ ...

  6. Android调用高德地图直接导航的简单实例

    在学校最近做了一个小APP,脑子笨怕忘,写个博客记录一下. 简单来说就是保存地点,然后单击直接打开高德地图APP并从当前所在地导航到保存的地点.因为是小型学习用的,所以保存地点采用了Android本地 ...

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

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

  8. IOS 调用第三方地图APP导航

    在开发中调用第三方APP进行路径规划,在此过程中不需要导入所调用地图的SDK,本文中只介绍调用百度地图.高德地图以及苹果自身地图APP. 在本项目中我用的是百度地图编码获取的百度经纬度坐标,而在开发过 ...

  9. 【iOS】高德地图SDK的详细使用

    文章目录 前言 需要用到的库 显示基础地图 地图定位 位置搜索 路线规划 前言 关于如何调用高德地图的SDK,项目前需要下载哪些库,还有正式开始写项目前的一些注意事项可见这篇博客[iOS]调用百度.高 ...

  10. Flutter 调用高德地图APP实现位置搜索、路线规划、逆地理编码

    1 开发准备 pubspec.yaml 配置文件中添加插件 dependencies:flutter:sdk: flutterurl_launcher: ^6.1.2 iOS 配置 info.plis ...

最新文章

  1. Java中的文件路径
  2. 度量.net framework 迁移到.net core的工作量(转)
  3. 多线程利器-队列(queue)
  4. mac远程桌面Microsoft Remote Desktop for Mac的安装与使用
  5. Mathtype写分段函数的方法
  6. 网易云基于Prometheus的微服务监控实践
  7. /UI2/USHELL folder and BSP application
  8. 开源.NET企业级应用系统 OpenVista
  9. 新型互联网交换中心促进互联网产业发展,助力信息经济创新
  10. 怎么做圆形二维码_圆形吊顶怎么做?装修网盘点圆形吊顶安装注意事项
  11. 数据库工作笔记016---Redis、Memcache和MongoDB的区别
  12. Retrofit的讲解和使用
  13. 博士招生 | 北京大学和中山大学博士申请考核还有名额,门槛不高,速来
  14. Python入门学习资料分享
  15. 高德地图 web API 多点路线绘制
  16. MySQL garbled code
  17. 请编程序将china译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如:字母A后面4个字母为E,因此,China应译为Glmre。
  18. 计算机视觉笔记及资料整理(含图像分割、目标检测)
  19. 看到的有意思的文章(一)
  20. 面试过程中的排列组合和趣味性题目一

热门文章

  1. LaTeX插入参考文献并引用
  2. VB.net下使用开源免费三维控件Anycad的应用实例分享
  3. 002HTML常用标签
  4. win7下MyEclipse装Nutch1.7
  5. mysql是个单用户数据库_MySQL是一个支持单用户的数据库管理系统 答案:×
  6. 新员工来到项目组的愿景_为您的项目设定愿景
  7. cad相对坐标快捷键_CAD常用的快捷键
  8. 联机(脱机)手写汉字识别
  9. scrapy爬虫总结
  10. 【量化实战】跟随龙虎榜个股交易能获利吗?