新增营销系统、分销系统、会员功能、门店、提现功能
This commit is contained in:
114
utils/mapUtils.js
Normal file
114
utils/mapUtils.js
Normal file
@ -0,0 +1,114 @@
|
||||
import { useInterface } from "@/hooks/useInterface";
|
||||
|
||||
/**
|
||||
* @name: mapUtils
|
||||
* @author: kahu4
|
||||
* @date: 2024-01-21 14:11
|
||||
* @description:mapUtils
|
||||
* @update: 2024-01-21 14:11
|
||||
* */
|
||||
export const mapUtils = {
|
||||
mapList: [
|
||||
{name: '高德地图'},
|
||||
{name: '百度地图'},
|
||||
// #ifdef H5
|
||||
{name: '腾讯地图'},
|
||||
// #endif
|
||||
]
|
||||
}
|
||||
export const openMap = (options) => {
|
||||
// #ifdef MP-WEIXIN
|
||||
_openInWechat(options)
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
_openInH5(options)
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
_openInApp(options)
|
||||
// #endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 微信小程序中打开地图
|
||||
* @param options
|
||||
* @return {Promise<unknown>}
|
||||
*/
|
||||
const _openInWechat = (options) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.openLocation({
|
||||
latitude: options.lat,
|
||||
longitude: options.lon,
|
||||
scale: 15,
|
||||
success: () => {
|
||||
resolve(true)
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* h5打开地图导航
|
||||
* @param options
|
||||
* @private
|
||||
*/
|
||||
const _openInH5 = (options) => {
|
||||
const {lat, lon, type, address} = options;
|
||||
let url = '';
|
||||
switch (type) {
|
||||
case '腾讯地图':
|
||||
url = 'https://apis.map.qq.com/uri/v1/marker?marker=coord:' + lat + ',' + lon + ';addr:' + address + ';title:地址&referer=keyfree';
|
||||
break;
|
||||
case '高德地图':
|
||||
url = 'https://uri.amap.com/marker?position=' + lon + ',' + lat + '&name=' + address + '&callnative=1';
|
||||
break;
|
||||
case '百度地图':
|
||||
url = 'http://api.map.baidu.com/marker?location=' + lat + ',' + lon + '&title=地址&content=' + address + '&output=html&src=webapp.reformer.appname&coord_type=gcj02';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
window.open(url, '_blank')
|
||||
}
|
||||
|
||||
const {toast} = useInterface()
|
||||
/**
|
||||
* APP打开地图
|
||||
* @param options
|
||||
* @return {*}
|
||||
* @private
|
||||
*/
|
||||
const _openInApp = (options) => {
|
||||
const {lat, lon, type, address} = options;
|
||||
const osName = plus.os.name.toLowerCase()
|
||||
const urlBaiduMap = 'baidumap://map/marker?location=' + lat + ',' + lon + '&title=' + encodeURIComponent(address) + '&src=com.bailb.hbb';
|
||||
const urlAMap = 'androidamap://viewMap?sourceApplication=com.bailb.hbb&poiname=' + encodeURIComponent(address) + '&lat=' + lat + '&lon=' + lon + '&dev=0';
|
||||
// 安卓
|
||||
if (osName === 'android') {
|
||||
const hasBaiduMap = plus.runtime.isApplicationExist({pname: 'com.baidu.BaiduMap', action: 'baidumap://'});
|
||||
const hasAMap = plus.runtime.isApplicationExist({pname: 'com.autonavi.minimap', action: 'androidamap://'});
|
||||
if (type === '高德地图' && !hasAMap) return toast({title: '手机未安装高德地图'})
|
||||
if (type === '百度地图' && !hasBaiduMap) return toast({title: '手机未安装百度地图'})
|
||||
if (type === '高德地图') {
|
||||
plus.runtime.openURL(urlAMap);
|
||||
} else {
|
||||
plus.runtime.openURL(urlBaiduMap);
|
||||
}
|
||||
return
|
||||
}
|
||||
// IOS
|
||||
if (osName === 'ios') {
|
||||
if (type === '高德地图') {
|
||||
plus.runtime.openURL(urlAMap, e => {
|
||||
plus.nativeUI.alert('本机未安装指定的地图应用');
|
||||
});
|
||||
} else {
|
||||
plus.runtime.openURL(urlBaiduMap, e => {
|
||||
plus.nativeUI.alert('本机未安装指定的地图应用');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user