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 ")
好文链接
发表评论