SwiftUI 跳转高德地图

超级简单的 demo一些基本的知识iosamap://itms-apps://

拓展:name 为中文

其实用 Swift 实现高德地图的跳转真的非常简单!

超级简单的 demo

先上一个最简单的 demo:

1、点击按钮根据经纬度和名称,打开高得地图2、如果没有高德地图则跳转 AppStore 进行安装

struct TestAMap: View {

var body: some View {

NavigationView {

Button(action: {

// 写死的经纬度

let latitude = 32.204402

let longitude = 119.452753

// 名称可以为空

let name = "AAAA"

let url = URL(string: "iosamap://viewMap?sourceApplication=application&poiname=\(name)&lat=\(latitude)&lon=\(longitude)&dev=1")

if UIApplication.shared.canOpenURL(url!) {

// 跳转高德地图

UIApplication.shared.open(url!, options: [:], completionHandler: nil)

} else {

// 跳转应用商店

let urlString = URL(string:"itms-apps://itunes.apple.com/app/id461703208")

UIApplication.shared.open(urlString!, options: [:], completionHandler: nil)

}

}, label: {

Text("点击跳转地图")

})

}

.navigationTitle("测试页面")

}

}

一些基本的知识

iosamap://

上面代码中用到了 iosamap://xxxx ,这个是 IOS 开发高德地图的协议。

使用方法参考高德官方文档:https://lbs.amap.com/api/amap-mobile/guide/ios/marker

itms-apps://

这个是 App Store 的跳转协议,关键在于最后的 appID 如何获取?

非常简单,打开 AppStore,打开你要跳转的应用

点击分享 - 拷贝链接链接最后的数字就是 appID

拓展:name 为中文

上面的代码中,name 只能为英文,否则会报错

解决:

struct MapNavigation {

// 根据经纬度、名称,打开高德地图导航进行跳转

static func showLocation(_ name: String, lat: String, lng: String) {

let urlStr = "iosamap://viewMap?sourceApplication=application&poiname=\(name)&lat=\(lat)&lon=\(lng)&dev=1"

.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

let url = URL(string: urlStr!)

if UIApplication.shared.canOpenURL(url!) {

// 跳转高德地图

UIApplication.shared.open(url!, options: [:], completionHandler: nil)

} else {

// 跳转应用商店

let urlString = URL(string:"itms-apps://itunes.apple.com/app/id461703208")

UIApplication.shared.open(urlString!, options: [:], completionHandler: nil)

}

}

}

使用方法:

MapNavigation.showLocation("测试地址", lat: "32.204402", lng: "119.452753 ")

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: