uni-app里根据不同环境打开第三方地图APP,如果有APP,也是使用 userAgent 去区分,调用它自己的sdk即可。
// 获取当前环境
function getEnvironment() {
const userAgent = window.navigator.userAgent.toLowerCase();
// 支付宝小程序
const isAlipayMini =
userAgent.indexOf('miniprogram') > -1 && userAgent.indexOf('alipay') > -1;
// 微信小程序
const isWeChatlet = userAgent.indexOf('miniprogram/wx') > -1;
if (isAlipayMini) {
return 'isAlipayMini';
} else if (isWeChatlet) {
return 'isWeChatlet';
}
}
/**
* 唤起地图APP
* @param {string} lng 经度
* @param {string} lat 维度
* @param {string} name 地名
* @param {string} address 地址
*/
async function openMap(lng, lat, name, address) {
const env = getEnvironment();
uni.showLoading({
title: '加载中',
});
let fromLng = '';
let fromLat = '';
uni.getLocation({
type: 'gcj02',
success: async function (res) {
const { longitude = '', latitude = '' } = res;
fromLng = longitude as string;
fromLat = latitude as string;
uni.hideLoading();
try {
if (env === 'isAlipayMini') {
my.openLocation({
longitude: lng,
latitude: lat,
name: name,
address: address,
success: (res) => {
console.log('openLocation-success', res);
},
fail: (res) => {
console.log('openLocation-fail', res);
},
});
} else {
wx.openLocation({
longitude: Number(lng),
latitude: Number(lat),
scale: 18,
success: (res) => {
console.log('openWXLocation-success', res);
},
fail: (res) => {
console.log('openWXLocation-fail', res);
},
});
}
} catch (err) {
uni.hideLoading();
console.log('catch error:', err);
}
},
});
}