vue web项目中调用腾讯地图API获取当前位置的经纬度

vue web项目中调用腾讯地图API获取当前位置的经纬度

第一次尝试使用axios去获取经纬度

main.js 中添加一下代码

import axios from 'axios'
axios.defaults.baseURL='#'
Vue.prototype.$http = axios
//这里学过vue使用过axios的人应该都可以看懂,就不做过多解释了

之后需要去腾讯地图位置服务中注册一个账号并申请key
在这里插入图片描述
回到我们的需要获取的页面中填入一下代码`

 <script>
 export default {
    name: 'Home',
    components: {
      HelloWorld
    },
    created() { 
      this.getlocation()
    },
    methods: {
    //这边使用了async,await去简化Promise并解构获取到的数据
    //其中axios中的 https://apis.map.qq.com/ws/location/v1/ip 是在下图中获取这里的key就是之前申请的
      async getlocation() {
        const {
          data: res
        } = await this.$http.get('https://apis.map.qq.com/ws/location/v1/ip', {
          params: {
            key: 'XOXBZ-MZWWD-CDX4H-PONXN-UA5PJ-D7FJN'
          }
        })
        console.log(res);
      }
    }
  }
</script>

这边使用了async,await去简化Promise并解构获取到的数据其中axios中的 https://apis.map.qq.com/ws/location/v1/ip 是在下图中获取这里的key就是之前申请的
在这里插入图片描述
之后去运行项目,会发现一个报错但是手动拼接url路径放入浏览器中又可以获取然后去百度了一下发现是跨域问题搜索到了vue-jsonp
跨域
在这里插入图片描述

第二次 使用vue-jsonp

使用过程中发现网上给的大部分方法全是坑
安装vue-jsonp

npm install vue-jsonp --save

在main.js中导入
记住这里,巨坑
下面是网上给的写法

import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)

然而官方的写法为

import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp)

添加完后在需要使用跨域的页面添加以下代码

<script>
  export default {
    name: 'Home',
    created() {
      //获取当前位置的经纬度
      var data = {
        key: "XOXBZ-MZWWD-CDX4H-PONXN-UA5PJ-D7FJN" //这个key就是你申请的密钥
      };
      var url = "https://apis.map.qq.com/ws/location/v1/ip"; //这个就是地理位置信息的接口
      data.output = "jsonp";
      this.$jsonp(url, data)
        .then(res => {
          console.log(res,123);
        })
        .catch(error => {
          console.log(error,456);
        });

    },
    methods: {

    }
  }
</script>

这里为第一种写法

然后报错
在这里插入图片描述

第二种写法

获取到了定位
在这里插入图片描述

欢迎各位大佬评论指导,指出不足

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
可以使用腾讯地图的JavaScript API获取当前位置经纬度。以下是一个使用Vue.js编写的示例代码: 1. 在`index.html`引入腾讯地图的JavaScript API: ```html <script src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script> ``` 其,`YOUR_KEY`需要替换成你自己的腾讯地图API密钥。 2. 在Vue组件添加一个地图容器: ```html <template> <div ref="mapContainer" style="width: 100%; height: 400px;"></div> </template> ``` 3. 在Vue组件的`mounted`生命周期钩子初始化地图,并获取当前位置经纬度: ```js mounted() { // 初始化地图 this.initMap(); }, methods: { initMap() { // 创建地图实例 const map = new qq.maps.Map(this.$refs.mapContainer, { center: new qq.maps.LatLng(39.916527, 116.397128), // 默认北京市心 zoom: 13, }); // 获取当前位置经纬度 const geolocation = new qq.maps.Geolocation(); geolocation.getLocation( (position) => { const latLng = new qq.maps.LatLng( position.lat, position.lng ); // 将地图心设置为当前位置 map.setCenter(latLng); }, () => { console.error("定位失败"); } ); }, } ``` 在上面的代码,我们首先创建了一个地图实例,并将地图容器绑定到Vue组件的`$refs`属性。然后,我们使用腾讯地图的Geolocation类来获取当前位置经纬度,并将地图心设置为当前位置。如果定位失败,则会在控制台输出错误信息。 注意:在使用腾讯地图API时,需要先在腾讯云上开通地图API服务,并申请密钥。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值