iOS应用内跳转百度高德苹果地图

移动开发经常用到基于位置的一些导航功能,但是对于对导航功能依赖性不强的的应用,我们直接采用应用外跳转地图APP即可。

但是应用间跳转,首先需要设置白名单,

在iOS 9 下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台Scheme,对于需要配置的平台,如果没有配置,将无法正常跳转平台客户端,因此需要配置Scheme名单。本文我们需要添加百度地图和高德地图的scheme白名单。

具体方法:在项目的info.plist中添加LSApplicationQueriesSchemes字段,类型是Array,然后添加两个Item。

下面直接上主要代码,网上高德都是直接导航的,为啥?都那么做?

- (void)mapBtnclick{
   if (![NSString isNotEmptyString:_currentadress]) {
       [self.locationManager startUpdatingLocation];
       [SDIndicator showInfoWithMessage:@"正在定位,请稍候..."];
   }
   _actionSheet= [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:nil];
   NSMutableArray *mapsArray=[[NSMutableArray alloc] initWithCapacity:0];
   _mapsUrlArray=[[NSMutableArray alloc] init];
   NSURL * apple_App = [NSURL URLWithString:@"http://maps.apple.com/"];
   if ([[UIApplication sharedApplication] canOpenURL:apple_App]) {
       [mapsArray addObject:@"使用苹果自带地图导航"];
       NSString *urlString=[NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",_strLatitude,_strLongitude,[_model.last_latitude floatValue],[_model.last_longitude floatValue] ];
       [_mapsUrlArray addObject:urlString];
   }

   NSURL * baidu_App = [NSURL URLWithString:@"baidumap://"];
   if ([[UIApplication sharedApplication] canOpenURL:baidu_App]) {
       [mapsArray addObject:@"使用百度地图导航"];

       NSString *stringURL =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=%@&mode=driving&coord_type=gcj02",[_model.last_latitude floatValue],[_model.last_longitude floatValue],_model.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       [_mapsUrlArray addObject:stringURL];

   }

   NSURL * gaode_App = [NSURL URLWithString:@"iosamap://"];
   if ([[UIApplication sharedApplication] canOpenURL:gaode_App]) {
       [mapsArray addObject:@"使用高德地图导航"];
       NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&sid=BGVIS1&slat=%f&slon=%f&sname=%@&did=BGVIS2&dlat=%f&dlon=%f&dname=%@&dev=0&t=0",@"龙巅鱼邻",_strLatitude,_strLongitude,_currentadress,[_model.last_latitude floatValue],[_model.last_longitude floatValue],_model.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
       [_mapsUrlArray addObject:urlString];

   }

   for (int x=0; x<mapsArray.count; x++) {
       [_actionSheet addButtonWithTitle:[mapsArray objectAtIndex:x]];

   }

   if (_mapsUrlArray.count>0) {
        [_actionSheet showInView:self.view.window];
   }else{
       [SDIndicator showInfoWithMessage:@"建议您安装高德或者百度地图"];
   }

}

下面说一下,主要的知识点

【1】

使用canOpenURL方法来检测该手机是否安装相应APP

该方法会返回一个BOOL值,当为YES时,表明已安装该APP

【2】

1、苹果自带地图(不需要检测,所以不需要URL Scheme)

2、百度地图 baidumap://

3、高德地图 iosamap://

当然要携带参数的话,就按照各个地图的规则进行传值即可

原文地址:https://www.cnblogs.com/widgetbox/p/9025646.html

时间: 2024-10-01 02:47:48

iOS应用内跳转百度高德苹果地图的相关文章

ios应用内跳转到appstore里评分

在ios6.0前跳转到appstore评分一般是直接跳转到appstore评分NSString *evaluateString = [NSString stringWithFormat:@"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=587767923"];    [[UIApplication sharedAp

iOS 应用内跳转到系统设置

在iOS5以下版本使用以下方法:[IOS5.1+之后不能使用此方法,iOS8的跳转方法已找到见下方,iOS7的正在摸索,欢迎大家给出观点意见] 通过URL Scheme的方式打开内置的Settings,代码如下 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 以下是内置的Settings的URL Scheme: About - prefs

iOS应用内跳转系统设置相关界面的方法

在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开蓝牙或者WIFI,提醒用户打开推送或者位置权限等.在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个prefs值,如下图: 跳转系统设置根目录中的项目使用如下的方法: 1 _array = @[ 2 @{@"系统设置":@"prefs:root=INTERNET_TETHERING"}, 3 @{@"WIFI设置":@"prefs:root=W

iOS App 内跳转到手机系统设置页面

在iOS开发中,有时会有跳转系统设置界面的需求,例如提示用户打开提醒用户打开推送或者位置权限等. 在iOS6之后,第三方应用需要跳转系统设置界面,需要在URL type中添加一个Prefs值,如下图: 注意:设置跳转有三种方式,每一种的使用场景都不同. 并且你在跳转到系统中自己应用下面设置的时候, 你的应用要提前至少申请了某一个权限,如通知,定位等.否则,会引起崩溃. 方式一:prefs:root=某项服务 方式二:prefs:root=bundleID 方式三: UIApplicationOp

iOS 应用内跳转到appstore里下载

SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话,那SKStoreProductViewController使用起来也非常简单了.当你希望向用户展示App Store中产品时,你需要: 1.实例化一个SKStoreProductViewController类2.设置它的delegate3.把sotre product视图控制器显示给消费者 剩下的就交给操作系统来处理了.需要记住一点的是SKSt

iOS 8应用内跳转到系统设置

iOS 8以后,苹果重新允许从应用内跳转到系统设置,在设置前须判断当前手机系统是否能够跳转到系统设置: if ([[UIApplicationsharedApplication] canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSetting

ionic3 应用内打开第三方地图导航 百度 高德

1.安装检测第三方APP是否存在的插件 cordova plugin add cordova-plugin-appavailability --save npm install --save @ionic-native/app-availability                   这个可以根据项目的版本兼容性选择安装固定的版本号 我安装的是@3.4.2 在页面引入 AppAvailability 并进行判断  因为ios和android的包名不一样 所以进行了判断 import { Ap

ios开发之定位和苹果地图

ios开发之定位和苹果地图 1. LBS开发简介 需求:社交类(微信 QQ)     附件的人 购物应用  显示商家位置 (美团 大众点评) 旅游类应用(去哪儿 携程)  显示当前位置周边酒店 餐馆 功能 :定位 (获取当前位置的地图) 地图(显示某个区域的地图) 实现: 苹果:定位功能和地图功能(国内使用高德的数据) 高德地图 百度地图 搜搜地图 腾讯地图 谷歌地图... 2.地理定位 1.库的配置 2.定位功能 3方向 3.地址编码和反编码 1 地址编码 获取经纬度 确定地理位置 2 地址反

&gt;=ios8 应用内跳转到系统设置界面-openURL

iOS8以后,苹果允许从应用内跳转到系统设置,但是调试结果表明,跳不到具体的设置项,使用前应该判断当前是否能够跳转到系统设置. 代码: 1 NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 2 if ([[UIApplication sharedApplication] canOpenURL:url]) { 3 [[UIApplication sharedApplication] openURL:url]