使用vue-cli创建项目,配合axios以及百度地图api获取当前位置(二)

368 阅读1分钟

一、清除 vue 自带多余内容

  1. 进入 app.vue 文件中删除下图内容

1.png

2. views 目录下删除 About.vue 文件

2.png

3. 进入 Home.vue 文件中删除下图内容

3.png

4. router 目录下进入 index.js 文件中删除下图内容

4.png

5. npm run serve 重新运行项目

二、安装配置 axios、vue-axios

终端中执行下面命令进行安装

    npm install axios vue-axios

mian.js 中导入 axios、vue-axios 全局挂载

    import axios from 'axios'
    import VueAxios from 'vue-axios'

    app.use(VueAxios, axios)

示例图:

5.png

三、百度地图开放平台创建应用

链接:百度地图开放平台

在控制台>应用管理>我的应用中创建应用

6.png

  • 应用名称随便起
  • 应用类型选择浏览器端
  • 白名单使用 *

最后提交即可

创建完成后,在应用列表中有刚刚创建的应用,发请求时会用到 ak

7.png 链接:ip 定位服务文档

请求的地址

http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll //GET请求

四、在 Home.vue 中写对应的代码

<template>
    <div class="home">
        <p>我的地址为:{{address}}</p>
    </div>
</template>

<script>
    export default {
        name: 'Home',
        data() {
            return {
                address: ''
            }
        },
        created() {
            // 调用获取定位的方法
            this.getAddress()
        },
        methods: {
            getAddress() {
                // http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll
                // ak填入创建应用对应的ak,ip不需要填
                this.axios.get('http://api.map.baidu.com/location/ip?ak=60guZ2jQhGPcARGkgDihcrf1L5mTGFye&coor=bd09ll').then(res => {
                    //打印一下请求的结果
                    console.log(res.data);
                })
            }
        }
    }
</script>
  1. 运行项目后,发现浏览器报了 CORS 跨域错误。

8.png 2. 解决跨域问题,在根目录下创建 vue.config.js 文件,进行代理设置。代码如下:

module.exports = {
    // 本地开发环境配置
    devServer: {
        proxy: {
            // 以/location开头的请求走此代理
            '/location': {
                target: 'https://api.map.baidu.com', //代理目标域名
                ws: true,
                pathRewrite: {
                    '^/location': '/location' //重写路径
                }
            }
        }
    }
}

在代码中就不需要域名前缀了,如图所示:

9.png

  1. 最后重启服务运行项目,改完 vue.config.js 代码后一定要重启服务

  2. 现在已经获取到了定位信息

10.png

  1. 最后整理下代码,将地址显示到页面上。

完整代码

<template>
    <div class="home">
        <p>我的地址为:{{address}}</p>
    </div>
</template>

<script>
    export default {
        name: 'Home',
        data() {
            return {
                address: ''
            }
        },
        created() {
            // 调用获取定位的方法
            this.getAddress()
        },
        methods: {
            getAddress() {
                // http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll
                // ak填入创建应用对应的ak,ip不需要填
                this.axios.get('/location/ip?ak=60guZ2jQhGPcARGkgDihcrf1L5mTGFye&coor=bd09ll').then(res => {
                    //打印一下请求的结果
                    console.log(res.data.content.address);
                    let { address } = res.data.content
                    this.address = address
                })
            }
        }
    }
</script>

传送门:使用vue-cli创建项目,配合axios以及百度地图api获取当前位置(一)