> 技术文档 > uniapp打开导航软件并定位到目标位置的实现

uniapp打开导航软件并定位到目标位置的实现

/** * 打开导航 * @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) } } }) }) } })}