/** * 打开导航 APP * @param {number} lat - 纬度 * @param {number} lng - 经度 * @param {string} name - 地点名称 */ export function openNavigation(lat, lng, name) { // #ifdef APP-PLUS const apps = [] // 检测高德地图 if (plus.runtime.isApplicationExist({ pname: 'com.autonavi.minimap', action: '' })) { apps.push({ title: '高德地图', scheme: `androidamap://navi?sourceApplication=odf&lat=${lat}&lon=${lng}&dev=0&style=2` }) } // 检测百度地图 if (plus.runtime.isApplicationExist({ pname: 'com.baidu.BaiduMap', action: '' })) { apps.push({ title: '百度地图', scheme: `baidumap://map/navi?location=${lat},${lng}&src=odf&coord_type=gcj02` }) } // 检测腾讯地图 if (plus.runtime.isApplicationExist({ pname: 'com.tencent.map', action: '' })) { apps.push({ title: '腾讯地图', scheme: `qqmap://map/routeplan?type=drive&to=${encodeURIComponent(name)}&tocoord=${lat},${lng}&referer=odf` }) } if (apps.length === 0) { uni.showToast({ title: '未检测到导航应用', icon: 'none' }) return } uni.showActionSheet({ itemList: apps.map(a => a.title), success(res) { const selected = apps[res.tapIndex] plus.runtime.openURL(selected.scheme, (err) => { uni.showToast({ title: '打开导航失败', icon: 'none' }) }) } }) // #endif // #ifdef H5 window.open(`https://uri.amap.com/navigation?to=${lng},${lat},${encodeURIComponent(name)}&mode=car&src=odf`) // #endif }