问答

vue 高德地图获取经纬度 如何处理?

作者:admin 2021-09-10 我要评论

问题描述 项目中想获取当前经纬度,传给后端,在获取数据 问题出现的环境背景及自己尝试过哪些方法 1、@vue/cli 4.2.3创建的项目 2、按照网上的方案,在public/i...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题描述

项目中想获取当前经纬度,传给后端,在获取数据

问题出现的环境背景及自己尝试过哪些方法

1、@vue/cli 4.2.3创建的项目
2、按照网上的方案,在public/index.html下引入

<script type="text/javascript" src="/uploads/allimg/210910/12020A263-0.jpg"></script>

3、在需要获取经纬度的页面

created() {
    this.getLocation()
},
methods: {
    getLocation() { // 从高德地图api获取浏览器定位
        const that = this
        AMap.plugin('AMap.Geolocation', function () {
            let geolocation = new AMap.Geolocation({
                // 是否使用高精度定位,默认:true
                enableHighAccuracy: true,
                // 设置定位超时时间,默认:无穷大
                timeout: 10000
            })

            geolocation.getCurrentPosition()
            AMap.event.addListener(geolocation, 'complete', onComplete)
            AMap.event.addListener(geolocation, 'error', onError)

            function onComplete(data) {
                // data是具体的定位信息
                console.log(data)
            }

            function onError() {
                // 定位出错
                that.getLatLngLocation()
            }
        })
    },
    getLatLngLocation() {
        AMap.plugin('AMap.CitySearch', function () {
            let citySearch = new AMap.CitySearch()
            citySearch.getLocalCity(function (status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    // 查询成功,result即为当前所在城市信息
                    AMap.plugin('AMap.Geocoder', function () {
                        let geocoder = new AMap.Geocoder({
                            // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
                            city: result.adcode
                        })
                        let lnglat = result.rectangle.split(";")[0].split(",")
                        geocoder.getAddress(lnglat, function (status, data) {
                            if (status === 'complete' && data.info === 'OK') {
                                // data为对应的地理位置详细信息
                            }
                        })
                    })
                }
            })
        })
    }
}

相关代码

粘贴代码文本(请勿用截图)

你期待的结果是什么?实际看到的错误信息又是什么?

网上的文档,到此就能在控制台上打印出经纬度。
但是我这里却报错

AMap is not defined
###

我自己找到方法了:
在根目录下新建vue.config.js文件,输入一下内容:

module.exports = {
    configureWebpack: {
        externals: {
            'AMap': 'AMap' // 高德地图配置
        }
    },
    devServer: {
        https: true // 启动https 不然定位要失败
    }
};

重启vue项目,

在需要获取定位的页面,引入AMap

import AMap from 'AMap'

然后对接以上代码!

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • vue 高德地图获取经纬度 如何处理?

    vue 高德地图获取经纬度 如何处理?

  • PHP,这段代码为什么读取不到文件*.txt

    PHP,这段代码为什么读取不到文件*.txt

  • rxjava 运行错误的时候获取对象数据

    rxjava 运行错误的时候获取对象数据

  • 移动端h5页面的自定义公式输入键盘

    移动端h5页面的自定义公式输入键盘

腾讯云代理商
海外云服务器