vue如何根据ip地址获取实时当地城市、时间、天气

  • 1.定位ip地址所在城市

    • 1.1获取使用腾讯位置API资格
  • 1.2设置授权IP

  • 1.3使用API获取IP地理位置

    • 1.3.1处理跨域问题
  • 1.3.2请求接口,获取数据

  • 2.根据获取的城市名称获取当地天气

    • 2.1引入axios
  • 2.2使用接口,获取当地天气

    • 2.2.1声明定时器
  • 2.2.2使用接口获取实时天气数据

  • 2.2.3销毁定时器

  • 3.补充

需求说明:通常我们在做一个项目时,首页需要一个模块,根据ip地址获取实时当地城市、时间、天气。因为天气的接口需要城市这个参数,因此首先需要根据ip地址获取设备所在城市,再在回调函数中调用天气的接口。

1.定位ip地址所在城市

===========================================================================

网上有很多获取位置的api,但是使用腾讯的位置服务api最好,返回的信息最全,包括经纬度,国家城市地区等。而其他绝大多数仅仅反馈了一个城市名。

1.1获取使用腾讯位置API资格


首先在https://lbs.qq.com/console/setting.html这个网页中 , 申请你自己key,也就是密钥,有了这个密钥,你才有资格使用位置服务api;

1.2设置授权IP


申请后,然后在官网上设置你的key,找到  key管理–》启用产品–》WebServiceAPI 选择授权IP 内容输入0.0.0.0-255.255.25.255

1.3使用API获取IP地理位置


这个接口是跨域的,腾讯给的方法是jsonp解决跨域,倘若是原生,我们可以直接用jq来进行jsonp跨域,可是axios根本不能进行jsonp跨域,网上查了半天,才找到vue中原来有一个依赖 vue-jsonp 用于专门解决jsonp跨域。

1.3.1处理跨域问题

安装下载vue-jsonp依赖

npm i -S vue-jsonp

在main.js中导入vue-jsonp

// 导入腾讯地图,获取用户当前位置

import VueJsonp from ‘vue-jsonp’

Vue.prototype.$jsonp = VueJsonp

Vue.use(VueJsonp)

1.3.2请求接口,获取数据

在date中先定义需要展示的数据

data() {

return {

// 当地信息(城市、时间、地点、天气)

local: {

// ip地址所在城市

city: ‘’,

// 所在城市温度

temperature: ‘’,

// 天气类型

type: ‘’,

// 时

hour: ‘’,

// 分

minute: ‘’,

// 月

month: ‘’,

// 日

date: ‘’,

// 星期几

day: ‘’,

// 出勤率echart数据

},

}

}

在methods中定义获取城市的方法getLocalCity,在created()中调用

getLocalCity() {

var data = {

key: ‘KSPBZ-V5L33-5EM3D-35N5X-DIY66-CRF7J’, //申请的密钥,写死就行

}

var url = ‘https://apis.map.qq.com/ws/location/v1/ip’ //这个就是地理位置信息的接口

data.output = ‘jsonp’

this.$jsonp(url, data)

.then((res) => {

this.local.city = res.result.ad_info.city

// 根据城市,获取当前天气和时间(在此先预留获取天气方法,完成后取消注释)

// this.getLocalWeather(this.local.city)

return res

})

.catch((error) => {

console.log(error)

})

},

2.根据获取的城市名称获取当地天气

================================================================================

2.1引入axios


安装axios

npm install axios

在main.js中引入axios

import axios from “axios”;

Vue.prototype.$axios = axios; //此处根据项目情况来配置

2.2使用接口,获取当地天气


2.2.1声明定时器

在data中声明定时器,用于后期的销毁

timeId: ‘’,

2.2.2使用接口获取实时天气数据

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

后记


总结一下这三次面试下来我的经验是:

  1. 一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!

  2. 代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!

  3. 尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!

  4. 多刷面经!

我把所有遇到的面试题都做了一个整理,并且阅读了很多大牛的博客之后写了解析,免费分享给大家,算是一个感恩回馈吧,有需要的朋友【点击我】获取。祝大家早日拿到自己心怡的工作!

篇幅有限,仅展示部分内容



击我】](https://bbs.csdn.net/topics/618191877 )获取。祝大家早日拿到自己心怡的工作!**

篇幅有限,仅展示部分内容



  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值