import QQMapWX from '@/lib/qqmap-wx-jssdk.js' const qqmapsdk = new QQMapWX({ key: 'TRLBZ-J3Z65-QDNIU-IS4SF-2W7HH-WFBTR', }) export interface LocationResult { latitude: number longitude: number address?: string raw?: any } export function getLocation( type: UniApp.GetLocationOptions['type'] = 'gcj02' ): Promise { return new Promise((resolve, reject) => { uni.getLocation({ type, success(location) { qqmapsdk.reverseGeocoder({ location: { latitude: location.latitude, longitude: location.longitude, }, success(res: any) { resolve({ latitude: location.latitude, longitude: location.longitude, address: res?.result?.address, raw: res, }) }, fail(err: any) { reject(err) }, }) }, fail(error) { handleLocationAuth(error).then(resolve).catch(reject) }, }) }) } function handleLocationAuth(error: unknown): Promise { return new Promise((resolve, reject) => { uni.getSetting({ success(setting) { if (setting.authSetting['scope.userLocation']) { reject(error) return } uni.showModal({ title: '友情提示', content: '小程序需要获取您的定位功能才可使用', success(modal) { if (!modal.confirm) { reject(error) return } uni.openSetting({ success(openRes) { resolve({ latitude: 0, longitude: 0, raw: openRes, }) }, fail(err) { reject(err) }, }) }, }) }, fail(err) { reject(err) }, }) }) }