美文网首页IOS
IOS第三方应用跳转到地图应用

IOS第三方应用跳转到地图应用

作者: zhhehj | 来源:发表于2017-08-03 16:12 被阅读54次
    QQ20170803-161342@2x.png

    做个项目,功能是需要从应用中跳转到地图应用中,并导航
    这里只判断几个主流的地图
    1.Apple自带的系统地图
    2.高德地图
    3.百度地图
    4.腾讯地图
    5.谷歌地图

    首先,想要从App中跳转到某个地图中,需要设置该地图的URLTypes 或白名单
    1.设置白名单
    在info.plist中添加key为LSApplicationQueriesSchemes的数组,在这个数组中添加对应的地图的URL Schemes

    QQ20170803-152634@2x.png

    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

    相关文章

      网友评论

        本文标题:IOS第三方应用跳转到地图应用

        本文链接:https://www.haomeiwen.com/subject/nxsplxtx.html