iOS应用中打开第三方地图

在项目中,遇到了应用中打开第三方地图的功能,网上的文章几乎清一色的打开第三方地图并且导航,但我的项目中不需要导航的功能,需要标记地点,故只能查官方的文档。

应用中用URL Secheme的方式打开第三方地图应用。对应的地图App有,谷歌地图,高德地图,百度地图。

他们对应的URL Secheme:

在iOS 9之后,由于苹果进一步完善了安全机制,我们要想用URL Secheme跳转,需要在Info.plist中添加如下代码:

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

跳转到谷歌地图:

if UIApplication.shared.canOpenURL(URL(string: Const.MapURL.googleSecheme)!) {
    let googleURLStr = "comgooglemaps://?q=\(coordinate.latitude),\(coordinate.longitude)&zoom=17&views=traffic"
    let googlemap = UIAlertAction(title: Const.MapType.googlemap, style: .default) { _ in
        if let url = URL(string: googleURLStr) {
            self.open(url: url)
        }
    }
    alert.addAction(googlemap)
}

跳转到高德地图:

if UIApplication.shared.canOpenURL(URL(string: Const.MapURL.gaodeSecheme)!) {
    let gaodeURLStr = "iosamap://viewMap?sourceApplication=\(Const.AppMessage.appName)&poiname=\(name)&lat=\(coordinate.latitude)&lon=\(coordinate.longitude)&dev=0"
    let gaodemap = UIAlertAction(title: Const.MapType.gaodemap, style: .default) { _ in
        if let url = URL(string: gaodeURLStr) {
            self.open(url: url)
        }
    }
    alert.addAction(gaodemap)
}

跳转到百度地图:

if UIApplication.shared.canOpenURL(URL(string: Const.MapURL.baiduSecheme)!) {
    let baiduURLStr = "baidumap://map/marker?coord_type=gcj02&zoom=17&location=\(coordinate.latitude),\(coordinate.longitude)&title=\(name)&content=\(address)&src=webapp.marker.demo.MapTest"
    let baidumap = UIAlertAction(title: Const.MapType.baidumap, style: .default) { _ in
        if let url = URL(string: baiduURLStr) {
            self.open(url: url)
        }
    }
    alert.addAction(baidumap)
}

具体的参数请参考对应的官方文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,794评论 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,578评论 8 183
  • 做个项目,功能是需要从应用中跳转到地图应用中,并导航这里只判断几个主流的地图1.Apple自带的系统地图2.高德地...
    zhhehj阅读 5,264评论 0 1
  • 目前学习阶段。以后我干会计谁给我乱七八糟一大堆无法形容的票,我一定会拿锅盖敲谁的头 晚安,好梦。今天开斋节哦
    微笑吧_微笑阅读 1,234评论 0 0
  • 沟通最大的效果就是明确自己或他人的问题并解决当前最大的困惑。有些时候,非常感激在人生迷茫的解决别人的指点,让人如沐...
    static2017阅读 4,162评论 0 0

友情链接更多精彩内容