123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- import {
- CHANGE_CURRENT_CITY,
- CHANGE_LOCATION_INFO,
- CHANGE_LOACTION_DETAIL_INFO
- } from './type'
- import { J_CURRENT_ADDRESS } from '../../config/constant'
- import {
- getAdressDetailByLngLat,
- getLngLatByAddress
- } from '@/utils'
- export default {
- namespaced: true,
- state() {
- return {
- // TODO: 默认值改掉
- locationInfo: {
- city: '佛山市',
- province: '广东省',
- adcode: '440606',
- district: '顺德区',
- towncode: '440606004000',
- streetNumber: {
- number: '1号',
- location: '113.300463,22.801715', // 113.06092 , 22.89223
- direction: '东北',
- distance: '165.82',
- street: '碧水路'
- },
- country: '中国',
- township: '大良街道',
- businessAreas: [ [] ],
- building: { name: [], type: [] },
- neighborhood: { name: [], type: [] },
- citycode: '0757'
- },
- detailAddress: '', // 广东省佛山市顺德区大良街道碧水路顺德市民活动中心
- currentCity: uni.getStorageSync(J_CURRENT_ADDRESS) || '大良街道',
- obtainLocationCount: 0
- }
- },
- mutations: {
- [CHANGE_LOCATION_INFO](state, location) {
- state.locationInfo = location.addressComponent
- typeof state.locationInfo.adcode === 'object' ? state.locationInfo.adcode = '' : ''
- state.detailAddress = typeof location.formatted_address === 'object' ? '' : location.formatted_address
- state.currentCity = typeof location.addressComponent.township === 'object' ? '' : location.addressComponent.township
- state.obtainLocationCount = state.obtainLocationCount + 1
- uni.setStorageSync(J_CURRENT_ADDRESS, state.currentCity)
- },
- [CHANGE_CURRENT_CITY](state, chooseCity) {
- uni.setStorageSync(J_CURRENT_ADDRESS, chooseCity)
- state.currentCity = chooseCity
- },
- [CHANGE_LOACTION_DETAIL_INFO](state, { detailInfo, currentCity }) {
- state.detailAddress = typeof detailInfo.formatted_address === 'object' ? '' : detailInfo.formatted_address
- state.currentCity = currentCity
- state.locationInfo = {
- city: typeof detailInfo.city === 'object' ? '' : detailInfo.city,
- province: typeof detailInfo.province === 'object' ? '' : detailInfo.province,
- adcode: typeof detailInfo.adcode === 'object' ? '' : detailInfo.adcode,
- district: typeof detailInfo.district === 'object' ? '' : detailInfo.district,
- towncode: '',
- streetNumber: {
- number: '',
- location: detailInfo.location,
- direction: '',
- distance: '',
- street: ''
- },
- country: '中国',
- township: typeof detailInfo.township === 'object' ? '' : detailInfo.township,
- businessAreas: [ [] ],
- building: { name: [], type: [] },
- neighborhood: { name: [], type: [] },
- citycode: ''
- }
- state.obtainLocationCount = state.obtainLocationCount + 1
- }
- },
- actions: {
- getCurrentLocation({ commit }, onSuccess) {
- // #ifdef APP
- uni.getLocation({
- type: 'gcj02',
- altitude: true,
- geocode: false,
- timeout: 5,
- cacheTimeout: 4000,
- accuracy: 'high',
- isHighAccuracy: true,
- success(res) {
- getAdressDetailByLngLat(res.latitude, res.longitude)
- .then((res) => {
- if (res.status === '1') {
- commit(CHANGE_LOCATION_INFO, res.regeocode)
- }
- })
- .catch(() => {})
- }
- })
- // #endif
- // #ifdef H5
- // MapLoader(
- // (res) => {
- // getAdressDetailByLngLat(res.latitude, res.longitude)
- // .then((res) => {
- // if (res.status === "1") {
- // commit(CHANGE_LOCATION_INFO, res.regeocode);
- // const addressDetail = res.regeocode;
- // onSuccess &&
- // typeof onSuccess === "function" &&
- // onSuccess(
- // addressDetail.addressComponent.province +
- // addressDetail.addressComponent.city +
- // addressDetail.addressComponent.district +
- // addressDetail.addressComponent.township
- // );
- // }
- // })
- // .catch(() => {
- // // _this.address = '定位失败'
- // });
- // },
- // () => {
- // uni.getLocation({
- // type: "gcj02",
- // success(res) {
- // getAdressDetailByLngLat(res.latitude, res.longitude)
- // .then((res) => {
- // if (res.status === "1") {
- // commit(CHANGE_LOCATION_INFO, res.regeocode);
- // const addressDetail = res.regeocode;
- // onSuccess &&
- // typeof onSuccess === "function" &&
- // onSuccess(
- // addressDetail.addressComponent.province +
- // addressDetail.addressComponent.city +
- // addressDetail.addressComponent.district +
- // addressDetail.addressComponent.township
- // );
- // }
- // })
- // .catch(() => {
- // // _this.address = '定位失败'
- // });
- // },
- // });
- // }
- // );
- uni.getLocation({
- type: 'gcj02',
- // altitude: true,
- // geocode: false,
- // highAccuracyExpireTime: 4000,
- // timeout: 5,
- // cacheTimeout: 4000,
- // accuracy: 'high',
- // isHighAccuracy: true,
- success(res) {
- // console.log(res)
- getAdressDetailByLngLat(res.latitude, res.longitude)
- .then((res) => {
- if (res.status === '1') {
- commit(CHANGE_LOCATION_INFO, res.regeocode)
- const addressDetail = res.regeocode
- onSuccess &&
- typeof onSuccess === 'function' &&
- onSuccess({
- detail:
- addressDetail.addressComponent.province +
- addressDetail.addressComponent.city +
- addressDetail.addressComponent.district +
- addressDetail.addressComponent.township,
- town: addressDetail.addressComponent.township
- })
- }
- })
- .catch(() => {
- // _this.address = '定位失败'
- })
- }
- // fail: (e) => {
- // console.log('aaaa', e)
- // },
- // complete: (e) => {
- // console.log('bbbb', e)
- // }
- })
- // #endif
- },
- async getDetailAddress({ commit, dispatch }, data) {
- const res = await getLngLatByAddress(data.city + data.distinguish + data.town)
- if (res.status == '1') {
- const detailInfo = res.geocodes[0]
- commit(CHANGE_LOACTION_DETAIL_INFO, {
- detailInfo,
- currentCity: data.town || data.distinguish || data.city
- })
- }
- }
- }
- }
|