iOS应用中打开第三方地图

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

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

他们对应的URL Secheme:

  • 谷歌地图
    URL Scheme:comgooglemaps://
    官方文档
  • 高德地图
    URL Scheme:iosamap://
    官方说明
  • 百度地图
    URL Scheme:baidumap://
    官方文档

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

LSApplicationQueriesSchemes

    comgooglemaps
    iosamap
    baidumap

跳转到谷歌地图:

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)
}

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

你可能感兴趣的:(iOS应用中打开第三方地图)