获取当前地理位置

 

yarn add weixin-js-sdk AMap

import wx from 'weixin-js-sdk'

import AMap from 'AMap'

/**
 * @description 获取定位信息
 * @author ricky
 * @param
 * @return
 */

const isWechat = navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
export const getPosition = () => {
    return new Promise((resolve, reject) => {
        if (isWechat) {
            wx.getLocation({
                type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                success: function(res) {
                    // 通过jssdk获取经纬度,再使用百度地图websericeApi进行逆地址解析
                    let location = `${res.latitude},${res.longitude}`
                    let url = `http://api.map.baidu.com/reverse_geocoding/v3/?ak=${BMAP_KEY}&output=json&coordtype=wgs84ll&location=${location}`
                    resolve(res)
                    vm.jsonp(url).then((data) => {
                        setPosition(data.result.addressComponent)
                    })
                },
                fail: (err) => {
                    console.log(err)
                    reject()
                }
            })
        } else {
            // 高德地图获取定位
            const map = new AMap.Map('container')
            map.plugin('AMap.Geolocation', function() {
                var geolocation = new AMap.Geolocation({ timeout: 8000 })
                geolocation.getCurrentPosition()
                AMap.event.addListener(
                    geolocation,
                    'complete',
                    (data) => {
                        setPosition(data.addressComponent, data.position.lng, data.position.lat)
                        resolve({
                            latitude: data.position.lat,
                            longitude: data.position.lng
                        })
                    }
                    // setPosition(data.addressComponent, null, null)
                )
                AMap.event.addListener(geolocation, 'error', (err) => {
                    console.log(err)
                    reject()
                })
            })
        }
    })
}
/**
 * @description 保存地理位置信息
 * @author ricky
 * @param
 * @return
 */
const setPosition = (position, longitude, latitude) => {
    store.dispatch('setPosition', {
        longitude: longitude,
        latitude: latitude,
        provinceCode: parseInt(Number(position.adcode) / 100) * 100,
        cityCode: parseInt(Number(position.adcode) / 10000) * 10000,
        areaCode: position.adcode,
        province: position.province,
        city: position.city,
        area: position.district
    })
}

 

腾讯地图api

http://apis.map.qq.com/ws/location/v1/ip?ip=59.58.96.18&key=youkey

 

3YJBZ-KMCEX-ISX45-ZMY7Z-HQPUO-RTFTJ

你可能感兴趣的:(js)