javascript
/**
* 打开导航
* @param location 经纬度(例如:"117.214713,39.116884")
* @param address 地址
*/
export function mapNavigation(location, address) {
const locationArr = location.split(',')
const longitude = locationArr[0]
const latitude = locationArr[1]
let url = '' // app url
let webUrl = '' // web url 用来为用户未安装导航软件时打开浏览器所使用url
plus.nativeUI.actionSheet({ // 选择菜单
title: '选择地图应用',
cancel: '取消',
buttons: [{
title: '高德地图'
}, {
title: '百度地图'
}] // 可选的地图类型
}, (e) => {
// 判断用户选择的地图
switch (e.index) {
// 下面是拼接url,不同系统以及不同地图都有不同的拼接字段
case 1: // 打开高德地图
if (plus.os.name == 'Android') { // 安卓
url =
`androidamap://viewMap?sourceApplication=appname&poiname=${address}&lat=${latitude}&lon=${longitude}&dev=0`
} else { // 苹果
url =
`iosamap://viewMap?sourceApplication=applicationName&poiname=${address}&lat=${latitude}&lon=${longitude}&dev=0`
}
webUrl =
`https://uri.amap.com/marker?position=${longitude},${latitude}&name=${address}&src=mypage&coordinate=gaode`
break
case 2: // 打开百度地图
if (plus.os.name == 'Android') { // 安卓
url =
`baidumap://map/marker?location=${latitude},${longitude}&title=${address}&content=${address}&src=andr.baidu.openAPIdemo&coord_type=gcj02`
} else { // 苹果
url =
`iosamap://map/marker?location=${latitude},${longitude}&title=${address}&content=${address}&src=ios.baidu.openAPIdemo&coord_type=gcj02`
}
webUrl =
`http://api.map.baidu.com/marker?location=${latitude},${longitude}&title=${address}&content=${address}&output=html&src=webapp.baidu.openAPIdemo`
break
}
// 如果选中
if (url != '') {
url = encodeURI(url)
// 打开 app 导航
plus.runtime.openURL(url, () => {
// 毕竟用户可能没有安装app但一定安装的有浏览器
// 如果失败则说明未安装 直接 打开网页版进行导航
let chooseMap = ''
if (e.index == 1) {
chooseMap = '高德地图'
} else if (e.index == 2) {
chooseMap = '百度地图'
} else {
chooseMap = '腾讯地图'
}
uni.showModal({
title: '提示',
content: '检测到您本机暂未安装' + chooseMap + '应用,是否要选择使用浏览器打开?',
confirmText: '确定',
cancelText: '取消',
showCancel: true,
success: function(res) {
if (res.confirm) {
plus.runtime.openURL(webUrl)
}
}
})
})
}
})
}