UNPKG

ty-mobile-uni

Version:

uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水

105 lines (102 loc) 3.34 kB
//获取当前位置 let BMapLoading = false; let BMapLoader = null; export function getBMap() { if (!BMapLoading) { BMapLoading = true; // 返回单例 BMapLoader = new Promise((resolve, reject) => { try { if (!window.BMap) { const script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://api.map.baidu.com/api?v=3.0&ak=nXwrVUz0e1FjTcGbzod7Hfh71U7l0KTN&callback=callbackBMap"; script.addEventListener('load', () => { // 回调方法放置 window.callbackBMap = () => { const infoBoxscript = document.createElement("script"); infoBoxscript.type = "text/javascript"; infoBoxscript.src = "https://api.map.baidu.com/library/InfoBox/1.2/src/InfoBox.js"; infoBoxscript.addEventListener('load', () => { return resolve(window.BMap); }); document.body.appendChild(infoBoxscript); }; }); // 异常监听 script.addEventListener('error', () => { window.BMap = undefined; BMapLoading = false; return reject(new TypeError('百度地图加载异常')) }); document.body.appendChild(script); } else { // 重置错误 BMapLoading = false; return resolve(window.BMap) } } catch (e) { // reject 错误 return reject(e); // throw new TypeError('百度地图加载异常', e); } }); } return BMapLoader } export function errorCatch(promise) { return promise.then((data) => [null, data]).catch(err => [err]) } export async function BMapFounder() { // [err, BMap] return await errorCatch(getBMap()); } export function getLocation(callBack, failCallBack) { if (window.BMap) { var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r) { if (this.getStatus() === window.BMAP_STATUS_SUCCESS) { //setTimeout(()=>{ // var convertor = new BMap.Convertor(); // var pointArr = []; // pointArr.push(r.point); // console.log(convertor,r,"----和"); // convertor.translate(pointArr,1,5, function(data) { // if(data.status === 0) { // callBack && callBack(data.points[0]); // } // else{ // failCallBack && failCallBack(); // } // }); callBack && callBack(r.point); // let lat = r.latitude; // let lng = r.longitude; // const pointBak = new BMap.Point(lng, lat); // const convertor = new BMap.Convertor(); // convertor.translate([pointBak], 1, 5,function(resPoint) { // if(resPoint && resPoint.points && resPoint.points.length>0){ // lng = resPoint.points[0].lng; // lat = resPoint.points[0].lat; // } // const point = new BMap.Point(lng, lat); // const geo = new BMap.Geocoder(); // geo.getLocation(point, (res) => { // //callBack && callBack(res.point); // console.log(res,"---正文"); // alert(JSON.stringify(res.addressComponents)+JSON.stringify(res.point)); // }); // }); //}, 3000); } else { failCallBack && failCallBack(); } }, { enableHighAccuracy: true }) } } export default { BMapFounder, getLocation };