ty-mobile-uni
Version:
uView UI,是uni-app生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
104 lines (98 loc) • 2.64 kB
JavaScript
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
});
}