使用百度天气API实现自己的天气预报
来源:互联网 发布:网络玄幻小说合集下载 编辑:程序博客网 时间:2024/05/16 06:37
昨天在简书看到一篇帖子是关于百度天气API的,感觉很棒,所以今天自己也写了个自己的天气预报,利用jsonp跨域请求,实现自己的天气预报展示。展示github链接:https://spiritliftedhigh.github.io/weatherForecast/weather.html
如图:
最主要的肯定是js了,接下来看一下如何实现:
1. 获得自己所在的当前城市
这个百度地图给了API,我们只要调用就可以,代码如下:
//用百度地图API获得当前所在城市 var map = new BMap.Map('map'); var myCity = new BMap.LocalCity(); var cityName; myCity.get(myFun); //异步获得当前城市 function myFun(result){ cityName = result.name.replace('市', ''); }
这个是获得城市名字,是异步的,所以一定要确保城市名已获得后再利用jsonp发送请求函数,不然会出错。
2. 发送jsonp跨域请求
//动态创建script标签 function jsonp(url){ var script = document.createElement('script'); script.src = url; document.body.append(script); document.body.removeChild(script); } //设置延时,因为获得当前城市所在地是异步的 setTimeout(function(){ var urls = []; urls[0] = 'http://sapi.k780.com/?app=weather.future&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&jsoncallback=getWeather_week&weaid=' + encodeURI(cityName); urls[1] = 'http://api.map.baidu.com/telematics/v3/weather?output=json&ak=FK9mkfdQsloEngodbFl4FeY3&callback=getTodayWeather&location=' + encodeURI(cityName); jsonp(urls[0]); //jsonp跨域请求 jsonp(urls[1]); }, 1000);
这样就获得了当前自己所在城市的天气,在src里面传递了两个函数,分别是getWeather_week
和 getTodayWeather
,去获得今天的天气和这周的天气。
3.解析json数据,写入DOM
{ data:"周一 04月17日 (实时:23℃)" dayPictureUrl:"http://api.map.baidu.com/images/weather/day/qing.png" nightPictureUrl:"http://api.map.baidu.com/images/weather/night/qing.png" temperature:"28 ~ 11℃" weather:"晴" wind:"东风微风"}
这是我从控制台复制的一段json数据,只要根据里面的键名获得数据,并写入DOM节点即可。
4. 为查询天气按钮添加事件,获得任意城市的天气
//添加事件,查询天气 document.getElementById('search').addEventListener('click', function (){ var cityname = document.getElementById('input-weather').value; if (cityname != ''){ var urls = []; urls[0] = 'http://sapi.k780.com/?app=weather.future&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json&jsoncallback=getWeather&weaid=' + encodeURI(cityname); urls[1] = 'http://api.map.baidu.com/telematics/v3/weather?output=json&ak=FK9mkfdQsloEngodbFl4FeY3&callback=getTodayWeather&location=' + encodeURI(cityname); jsonp(urls[0]); jsonp(urls[1]); } }, true);
注意:以上jsonp请求的接口链接都是别人的,可能会失效,当然可以自己去申请,所以直接用的话,可能会出错,望见谅!
大概的步骤就是这样,感兴趣的话可以自己实现一下的。源码参考github:https://github.com/SpiritLiftedHigh/weatherForecast,觉得可以的话给个星吧!
0 0
- 使用百度天气API实现自己的天气预报
- Android——调用百度天气API实现天气预报
- 百度天气预报API的使用
- Android——天气预报(MVP、Gson和天气、百度地图Api的练习)
- Android上实现一个简单的天气预报APP(十四) 使用百度API定位城市
- 基于百度地图API实现的地图形式天气预报【一】
- 基于百度地图API实现的地图形式天气预报【二】
- 基于百度地图API实现的地图形式天气预报
- 基于百度地图API实现的地图形式天气预报【二】
- 用百度天气接口的实现安卓天气预报(json数据)
- 百度天气预报API的使用(java版本)
- Android天气预报+百度天气接口
- 如何使用百度天气预报API接口
- 如何使用百度天气预报API接口
- 如何使用百度天气预报API接口
- 利用中央气象台的天气预报API实现天气预报
- Android天气预报各种天气API
- 利用百度api store中的世界天气预报API制作实时天气查询
- Android中的PendingIntent
- 服务器远程安装Matlab2015
- [2017雅礼集训]day10 T2 数列 最长上升子序列
- TLD运动检测与目标跟踪详细介绍
- Swift3.0 信鸽推送
- 使用百度天气API实现自己的天气预报
- 日常训练 棋盘游走
- 数字字符
- Linux内存管理之进程创建的写时拷贝技术
- Gym
- BZOJ1036--树链剖分模板
- NSProxy学习
- angular2系列教程(四)Attribute directives
- android 开发时报错Unsupported major.minor version 52.0