做个项目,功能是需要从应用中跳转到地图应用中,并导航
这里只判断几个主流的地图
1.Apple自带的系统地图
2.高德地图
3.百度地图
4.腾讯地图
5.谷歌地图
首先,想要从App中跳转到某个地图中,需要设置该地图的URLTypes 或白名单
1.设置白名单
在info.plist中添加key为LSApplicationQueriesSchemes的数组,在这个数组中添加对应的地图的URL Schemes
2.设置URL Types
在Target - >info 中的URL Types中添加对应地图的URL Schemes
QQ20170803-152658@2x.png
在IOS9中,官方规定“如果使用URL scheme必须在"Info.plist"中将你要在外部调用的URL Schemes列为白名单,否则不能使用”。
注意:这里是要在外部调用的URL Schemes必须设为白名单,即提供给别人使用的,就像我使用百度地图的URL Schemes,这百度地图的URL Schemes必须设置成白名单。
注意:只设置URL Types虽说也能实现跳转到地图应用,但是这是地图应用已经安装了的情况。如果你安装了高德地图,这时可以跳转了,当你把高德地图删除以后,canOpenURL返回的还是True,并不能检测到高德地图被删除了。
所以这里还是推荐使用白名单
言归正传
要跳转到这些地图中就要判断是否安装这些应用
QQ20170803-154820@2x.png上图中是会用到的URL Schemes
使用[[UIApplication sharedApplication]canOpenURL:BaiduMap]来判断是否安装此地图如果没有安装则不显示出来
跳转到地图中会用到openURL方法
在IOS10及以后 [[UIApplication sharedApplication]openURL:object options:@{} completionHandler:nil];取代了[[UIApplication sharedApplication]openURL:object];
上面的object的url如果只是简单的跳转到地图应用中,则可以直接使用
下图中URL Schemes
QQ20170803-154820@2x.png
如果涉及到导航,则就要把位置信息传递过去
则url中可以封装以下字符串(下面的字符串截图是网上扒的,还没验证,不过各个开放平台都有,可以自己去验证)
1.百度
baidu.png
2.高德
高德.png
3.谷歌
谷歌.png
4.腾讯
腾讯.png
下面是关于跳转到系统自带地图的问题
在IOS10中,用户可以将系统的一些自带的应用删除,这就涉及到是否删除了系统地图的问题。
不过我不考虑这些问题,就当系统地图一直存在于手机中
如果没有删除系统地图在点击跳转的时候自然万事大吉,
假如真的删除了怎么办?没关系,系统会提醒你去AppStore中恢复它
很省事不是吗?
我跳转到系统地图使用的是下面的语句,这个使用到了MapKit,事先先导入
apple.png
网友评论