2022-04-17 11:57:56 +00:00
|
|
|
|
const tools = require('../tools.js')
|
|
|
|
|
// 解决微信小程序
|
|
|
|
|
var QQMapWX = require('./qqmap-wx-jssdk.min.js');
|
|
|
|
|
// 腾讯地图
|
|
|
|
|
var qqmapsdk = new QQMapWX({
|
|
|
|
|
key: 'QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA'
|
|
|
|
|
});
|
|
|
|
|
// 解决H5跨域
|
|
|
|
|
const jsonp = function(url, data) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
// 1.初始化url
|
|
|
|
|
let dataString = url.indexOf('?') === -1 ? '?' : '&'
|
|
|
|
|
let callbackName = `jsonpCB_${ Date.now() }`;
|
|
|
|
|
url += `${ dataString }callback=${ callbackName }`
|
|
|
|
|
if(data) {
|
|
|
|
|
// 2.有请求参数,依次添加到url
|
|
|
|
|
for(let k in data) {
|
|
|
|
|
url += `&${ k }=${ data[k] }`
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
let scriptNode = document.createElement('script');
|
|
|
|
|
scriptNode.src = url;
|
|
|
|
|
// 3. callback
|
|
|
|
|
window[callbackName] = (result) => {
|
|
|
|
|
result ? resolve(result) : reject('没有返回数据');
|
|
|
|
|
delete window[callbackName];
|
|
|
|
|
document.body.removeChild(scriptNode);
|
|
|
|
|
}
|
|
|
|
|
// 4. 异常情况
|
|
|
|
|
scriptNode.addEventListener('error', () => {
|
|
|
|
|
reject('接口返回数据失败');
|
|
|
|
|
delete window[callbackName];
|
|
|
|
|
document.body.removeChild(scriptNode);
|
|
|
|
|
}, false)
|
|
|
|
|
// 5. 开始请求
|
|
|
|
|
document.body.appendChild(scriptNode)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
const yayaMap = {
|
2022-04-18 10:13:41 +00:00
|
|
|
|
// 判断app、小程序是否开启GPS定位服务
|
|
|
|
|
checkOpenGPSServiceByAndroidIOS() {
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
let system = uni.getSystemInfoSync(); // 获取系统信息
|
|
|
|
|
if (system.platform === 'android') { // 判断平台
|
|
|
|
|
var context = plus.android.importClass("android.content.Context");
|
|
|
|
|
var locationManager = plus.android.importClass("android.location.LocationManager");
|
|
|
|
|
var main = plus.android.runtimeMainActivity();
|
|
|
|
|
var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
|
|
|
|
|
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '请打开定位服务功能',
|
|
|
|
|
showCancel: false, // 不显示取消按钮
|
|
|
|
|
success() {
|
|
|
|
|
if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) {
|
|
|
|
|
var Intent = plus.android.importClass('android.content.Intent');
|
|
|
|
|
var Settings = plus.android.importClass('android.provider.Settings');
|
|
|
|
|
var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
|
|
|
|
|
main.startActivity(intent); // 打开系统设置GPS服务页面
|
|
|
|
|
} else {
|
|
|
|
|
console.log('GPS功能已开启');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else if (system.platform === 'ios') {
|
|
|
|
|
console.log("苹果");
|
|
|
|
|
var cllocationManger = plus.ios.import("CLLocationManager");
|
|
|
|
|
var enable = cllocationManger.locationServicesEnabled();
|
|
|
|
|
var status = cllocationManger.authorizationStatus();
|
|
|
|
|
plus.ios.deleteObject(cllocationManger);
|
|
|
|
|
if (enable && status != 2) {
|
|
|
|
|
console.log("手机系统的定位已经打开");
|
|
|
|
|
} else {
|
|
|
|
|
console.log("手机系统的定位没有打开");
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '请前往设置-隐私-定位服务打开定位服务功能',
|
|
|
|
|
showCancel: false, // 不显示取消按钮
|
|
|
|
|
success() {
|
|
|
|
|
var UIApplication = plus.ios.import("UIApplication");
|
|
|
|
|
var application2 = UIApplication.sharedApplication();
|
|
|
|
|
var NSURL2 = plus.ios.import("NSURL");
|
|
|
|
|
// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
|
|
|
|
|
// var setting2 = NSURL2.URLWithString("App-Prefs:root=LOCATION_SERVICES");
|
|
|
|
|
var setting2 = NSURL2.URLWithString("app-settings:");
|
|
|
|
|
//var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION");
|
|
|
|
|
// var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION_SERVICES");
|
|
|
|
|
application2.openURL(setting2);
|
|
|
|
|
plus.ios.deleteObject(setting2);
|
|
|
|
|
plus.ios.deleteObject(NSURL2);
|
|
|
|
|
plus.ios.deleteObject(application2);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
wx.getSetting({
|
|
|
|
|
success: (res) => {
|
|
|
|
|
console.log(res,99);
|
|
|
|
|
if (!res.authSetting['scope.userLocation']) {
|
|
|
|
|
//打开提示框,提示前往设置页面
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title:'为了更好的体验,请开启定位服务',
|
|
|
|
|
confirmText:'开启',
|
|
|
|
|
cancelText:'关闭',
|
|
|
|
|
success:(res)=> {
|
|
|
|
|
if(res.confirm) {
|
|
|
|
|
wx.openSetting({success (res) {}})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
2022-04-17 11:57:56 +00:00
|
|
|
|
// 平台判断
|
|
|
|
|
platformEv(){
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
this.getAddress();
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
this.getAddressWx();
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
this.getAddressH5();
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description app获取经纬度和详细地址方法
|
|
|
|
|
*/
|
|
|
|
|
getAddress(){
|
|
|
|
|
uni.getLocation({
|
|
|
|
|
type: 'gcj02',
|
|
|
|
|
geocode:true,
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
// console.log(res,'地址信息');
|
|
|
|
|
let params = {
|
|
|
|
|
latitude:res.latitude,
|
|
|
|
|
longitude:res.longitude,
|
|
|
|
|
address:`${res.address.province}${res.address.city}${res.address.district || ''}${res.address.street || ''}${res.address.streetNum || ''}${res.address.poiName || ''}`
|
|
|
|
|
}
|
|
|
|
|
console.log(params,'APP');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 微信获取经纬度和详细地址方法
|
|
|
|
|
*/
|
|
|
|
|
getAddressWx(){
|
|
|
|
|
uni.getLocation({
|
|
|
|
|
type: 'gcj02',
|
|
|
|
|
geocode:true,
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
// console.log(res,'地址信息');
|
|
|
|
|
qqmapsdk.reverseGeocoder({
|
|
|
|
|
location: {latitude: res.latitude, longitude: res.longitude},
|
|
|
|
|
success:(res)=> {
|
|
|
|
|
// console.log(res,'WX');
|
|
|
|
|
let params = {
|
|
|
|
|
latitude:res.result.location.lat,
|
|
|
|
|
longitude:res.result.location.lng,
|
|
|
|
|
address:`${res.result.address}`
|
|
|
|
|
}
|
|
|
|
|
console.log(params,'WX');
|
|
|
|
|
},
|
|
|
|
|
fail(err) {
|
|
|
|
|
console.log(err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description H5获取经纬度和详细地址方法
|
|
|
|
|
*/
|
|
|
|
|
getAddressH5(){
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '定位中...',
|
|
|
|
|
mask:true
|
|
|
|
|
});
|
|
|
|
|
uni.getLocation({
|
|
|
|
|
type: 'gcj02', // wgs84 gcj02
|
|
|
|
|
altitude: true,
|
|
|
|
|
// geocode: true, // wgs84
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
let str = `output=jsonp&key=QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA&location=${res.latitude},${res.longitude}`
|
|
|
|
|
jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+str,{}).then(res=>{
|
|
|
|
|
// console.log(res,'H5');
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
if(res.status == 0){
|
|
|
|
|
let params = {
|
|
|
|
|
latitude:res.result.location.lat,
|
|
|
|
|
longitude:res.result.location.lng,
|
|
|
|
|
address:`${res.result.address}`
|
|
|
|
|
}
|
|
|
|
|
console.log(params,'H5');
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 打开地图导航
|
|
|
|
|
*/
|
|
|
|
|
openLocation(latitude,longitude,name,address){
|
|
|
|
|
uni.openLocation({
|
|
|
|
|
latitude: parseFloat(latitude),
|
|
|
|
|
longitude: parseFloat(longitude),
|
|
|
|
|
name:name,
|
|
|
|
|
address:address,
|
2022-04-19 06:13:14 +00:00
|
|
|
|
success: ()=> {
|
2022-04-17 11:57:56 +00:00
|
|
|
|
console.log('success');
|
|
|
|
|
},
|
2022-04-19 06:13:14 +00:00
|
|
|
|
fail:(err)=> {
|
2022-04-17 11:57:56 +00:00
|
|
|
|
console.log(err)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 传入目的地的经纬度、地点名称、详细地址,打开地图导航到达目的地
|
|
|
|
|
*/
|
|
|
|
|
goFlag:true,
|
|
|
|
|
goThere(latitude=30.656693,longitude=104.136425,name="大向天诚有限责任公司",address="四川省成都市成华区双店路B口"){
|
|
|
|
|
if(this.goFlag){
|
|
|
|
|
this.goFlag = false;
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
wx.getLocation({//获取当前经纬度
|
|
|
|
|
type: 'wgs84', //返回可以用于wx.openLocation的经纬度,官方提示bug: iOS 6.3.30 type 参数不生效,只会返回 wgs84 类型的坐标信息
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
wx.openLocation({//使用微信内置地图查看位置。
|
|
|
|
|
latitude: parseFloat(latitude),//要去的纬度-地址
|
|
|
|
|
longitude: parseFloat(longitude),//要去的经度-地址
|
|
|
|
|
name: name,
|
|
|
|
|
address: address,
|
|
|
|
|
fail:err=>{
|
|
|
|
|
tools.showToast('地址信息错误');
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
|
|
// #ifdef APP-PLUS || H5
|
|
|
|
|
uni.openLocation({
|
|
|
|
|
latitude: parseFloat(latitude),
|
|
|
|
|
longitude: parseFloat(longitude),
|
|
|
|
|
name:name,
|
|
|
|
|
address:address,
|
|
|
|
|
success:()=> {
|
|
|
|
|
console.log('success');
|
|
|
|
|
},
|
|
|
|
|
fail:err=>{
|
|
|
|
|
console.log(err)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// #endif
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
this.goFlag = true;
|
|
|
|
|
},2000)
|
|
|
|
|
} else {
|
|
|
|
|
tools.showToast('请勿多次点击');
|
|
|
|
|
}
|
2022-04-19 06:13:14 +00:00
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* @description 经纬度===>地址
|
|
|
|
|
*/
|
|
|
|
|
getLocation(lat,lng){
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.getLocation({
|
|
|
|
|
type:'gcj02',
|
|
|
|
|
geocode:true,
|
|
|
|
|
success:(res)=> {
|
|
|
|
|
console.log(res)
|
|
|
|
|
qqmapsdk.reverseGeocoder({
|
|
|
|
|
location: {
|
|
|
|
|
latitude: res.latitude,
|
|
|
|
|
longitude: res.longitude
|
|
|
|
|
},
|
|
|
|
|
success:(res)=> {
|
|
|
|
|
console.log(res);
|
|
|
|
|
resolve(res)
|
|
|
|
|
},
|
|
|
|
|
fail:(res)=> {
|
|
|
|
|
if(res.status == 1000){
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title:'请勿频繁查询,稍后再试',
|
|
|
|
|
icon:'none'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
reject(res)
|
|
|
|
|
},
|
|
|
|
|
complete:(res)=> {
|
|
|
|
|
// console.log(res);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
2022-04-19 12:18:00 +00:00
|
|
|
|
},
|
2022-04-19 06:13:14 +00:00
|
|
|
|
/**
|
|
|
|
|
* @description 地址===>经纬度
|
|
|
|
|
*/
|
|
|
|
|
getAddressLocation(address) {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
qqmapsdk.geocoder({
|
|
|
|
|
address:address,
|
|
|
|
|
success: (res)=> {
|
|
|
|
|
resolve(res)
|
|
|
|
|
},
|
|
|
|
|
fail: (res)=> {
|
|
|
|
|
if(res.status == 1000){
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title:'请勿频繁查询,稍后再试',
|
|
|
|
|
icon:'none'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
reject(res)
|
|
|
|
|
},
|
|
|
|
|
complete: (res)=> {
|
|
|
|
|
// console.log(res);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
2022-04-17 11:57:56 +00:00
|
|
|
|
}
|
|
|
|
|
export default yayaMap;
|