UNPKG

ty-mobile-uni

Version:

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

104 lines (98 loc) 2.64 kB
import Vue from 'vue' import vueJsonp from "./vue-jsonp.umd.js"; Vue.use(vueJsonp); //获取腾讯地图对象地图对象 export function getQQMap() { return new Promise((resolve, reject) => { if (window.qq) { resolve(window.qq); } else { const script = document.createElement("script"); script.type = "text/javascript"; script.src = "https://mapapi.qq.com/web/mapComponents/geoLocation/v/geolocation.min.js"; script.addEventListener('load', () => { resolve(window.qq); }); // 异常监听 script.addEventListener('error', () => { window.qq = undefined; reject(new TypeError('腾讯地图加载异常')) }); document.body.appendChild(script); } }); } //获取当前定位 export function getQQLocation() { return new Promise((resolve, reject) => { getQQMap().then(qq => { Vue.prototype.QQgeolocation = new qq.maps.Geolocation("TD2BZ-NNY32-65FUK-CXJ7E-QEVBZ-6ZBAS", "myapp"); Vue.prototype.QQgeolocation.getLocation((position) => { resolve(position); }, function(error) { reject('获取定位失败'); }, { timeout:10000, failTipFlag: true }) }).catch(error => { reject(error); }); }); } //根据经纬度获取地址详细信息 export function getQQAddressByGeo(geo,getPoi) { const get_poi=getPoi||0; const { latitude, longitude } = geo; return new Promise((resolve, reject) => { if((!latitude) ||(!longitude)){ reject('经纬度为必填项'); } let detailAddress = {}; const KEY = 'TD2BZ-NNY32-65FUK-CXJ7E-QEVBZ-6ZBAS'; //key 秘钥自己申请 let locationdata = latitude + ',' + longitude //纬度,经度 let url = `https://apis.map.qq.com/ws/geocoder/v1?&poi_options=address_format=short&get_poi=${get_poi}&key=${KEY}&output=jsonp&location=${locationdata}&callback=QQmap`; // #ifdef H5 console.log(url,locationdata); Vue.prototype.$jsonp(url, { key: KEY, callbackName: 'QQmap', output: 'jsonp', location: locationdata }) .then(res => { console.log(res,"信息--"); const { address_component={}, ad_info } = res.result; detailAddress = { ...res.result, addressComponent: { ...address_component, adcode: ad_info.adcode } }; resolve(detailAddress); }) .catch(err => { reject(err); }) // #endif // #ifndef H5 uni.request({ url: url, success: (res) => { detailAddress = res.data.result; resolve(detailAddress); }, fail: (res) => { reject(res); }, }); // #endif }); }