php天气城市切换怎么实现,PHP 调用接口生成天气预报 三级联动城市列表 仿中国天气网界面...
网上找了很多天气接口的文章,大都是只介绍,很难找到成品,用PHP开发了一个,效果如下,共享一下!
程序使用 PHP 实现,通过调用中国国家气象局网站提供的天气接口,生成未来六天的天气预报和当前的实时天气信息。为了减轻服务器负载,程序加入了缓存功能,1小时内访问同一个城市的天气情况,都将会从缓存中读取,使得重复查看同一个城市天气时的速度大大提高。
程序集成有城市三级联动选择功能。在 "city_codes" 文件夹里附带有生成三级城市数组的 php 程序。
天气接口封装成了类( weather.php ),调用时很简单:
include 'weather.php';
$lib_weather = new weather();
$reports = $lib_weather->get_reports( $city_code );
$real_reports = $lib_weather->get_real_reports( $city_code );
$city_code为指定城市的代码(例: 101010100),返回值中 $reports 包含未来六天的天气情况,$real_reports 为实时天气信息。
底层使用 PHP CURL 模拟浏览器 http 访问 天气网接口,请注意栓查服务器是否启用了 CURL, 因为该接口比较简单,只用了 GET 方式:
天气接口类使用 txt 格式作为缓存文件。每个城市将会产生两个缓存文件,分别代表近期和实时两种天气数据,使用时注意设置缓存文件夹可写。
city_codes/convert.php 是将普通的城市代码(本例中 city_codes.txt, 从网上搜索得到), 转换成三维数组,保存在 city_codes.php 文件中。
城市代码规则:
河南省,许昌市,鄢陵县的城市代码为:101180402
拆分为四段 101 18 04 02
所有城市的前三位都相同,前两段会并考虑为省;
其中前五位 "101"+"18" 代表省 = 河南省
第七八位 "04" 代表市 = 许昌市
最后两位 "02" 代表县 = 鄢陵县
跟据省市信息可以将所有城市划分成三维数组。北京/天津/上海/重庆 四个直辖市要特殊处理。转换后大部分城市在数组中的位置正确,只有部分城市需要手工改动一下(海南的几个市)。
代码中包含了一个 lunar.php, 用于转换公历到农历日期。 另外因为天气接口中返回的天气图标索引有的不正常( 如常出现 "99"),本程序中跟据天气情况做了一下转化:
public function get_img_index( $name )
{
$img_indexs = array(
'晴'=>0,
'多云'=>1,
'阴'=>2,
'阵雨'=>3,
'雷阵雨'=>4,
'雷阵雨伴有冰雹'=>5,
'雨夹雪'=>6,
'小雨'=>7,
'中雨'=>8,
'大雨'=>9,
'暴雨'=>10,
'大暴雨'=>11,
'特大暴雨'=>12,
'阵雪'=>13,
'小雪'=>14,
'中雪'=>15,
'大雪'=>16,
'暴雪'=>17,
'雾'=>18,
'冻雨'=>19,
'沙尘暴'=>20,
'小雨-中雨'=>21,
'中雨-大雨'=>22,
'大雨-暴雨'=>23,
'暴雨-大暴雨'=>24,
'大暴雨-特大暴雨'=>25,
'小雪-中雪'=>26,
'中雪-大雪'=>27,
'大雪-暴雪'=>29,
'浮尘'=>29,
'扬沙'=>30,
'强沙尘暴'=>31,
'霾'=>53
);
if(array_key_exists($name, $img_indexs))
{
return $img_indexs[$name];
}
return 'x';
}
使用时
相关天气图标从中国天气网采集,已提供下载,d文件夹表示白天(day),n文件夹表示晚上(night).
演示网址:
http://www.1024i.com/product/demo/weather/v1.0/
php天气城市切换怎么实现,PHP 调用接口生成天气预报 三级联动城市列表 仿中国天气网界面...相关推荐
- 什么是短网址?如何调用接口生成短地址?
随着网络应用的深入和普及,网址资源越来越少了,长尾网址也派上用场了,只是网址太长不方便识别与记录.因此,就有了短网址替代长网址的技术接口. 随着SEO的重要性越来越明显,在推广的时候如果把网页链接缩短 ...
- android仿ios城市选择,Android 省市区三级联动选择器(仿iOS滚轮实现)
前言 在实际的项目中需要使用到省市区三级联动的功能,在网上找来找去,都没有找到一个合适的库, 所以自己就封装了一个,不需要自己添加数据源,直接引用即可,一行代码搞定城市选择.怎么简单,怎么方便,怎么来 ...
- html5手机移动端三级联动城市选择器,jquery移动端省市县(区)三级联动插件
最近刚做完一个版本的项目,闲暇时间,就索性把项目中需要用到的插件都自己写了一个,毕竟自己动手丰衣足食才是最重要,自己写的,可以应对各种项目需求,今天又把手机端的省市区三级联动选择功能编写了一个插件出来 ...
- layui省市区三级联动城市选择
index.html <!doctype html> <html> <head> <meta charset="utf-8"> &l ...
- html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...
[实例简介] [实例截图] [核心代码] jQuery手机端收货地址选择代码 - 站长素材 默认调用 所在地区: 设置默认值 所在地区: /** * 默认调用 */ !function () { va ...
- html5手机移动端三级联动城市选择器
//我的地址 var area1 = new LArea(); area1.init({ 'trigger': '#demo1', //触发选择控件的文本框,同时选择完毕后name属性输出到该位置 ' ...
- 天气预报API接口 : 城市对应码(中国天气网)
文章目录 天气预报接口api(中国天气网) 中国天气网城市代码: 相关阅读 · 资源: 天气预报接口api(中国天气网) 中国天气 weather.com http://m.weather.com.c ...
- 中国天气网 天气预报API 国家气象局 根据城市名称抓取城市ID,XML格式、JSON格式、图片代码...
为什么80%的码农都做不了架构师?>>> 说到开发天气预报,就需要找一个开放接口了,接口有很多,不过个人觉得,中国天气网的数据比较准确,而且也有权威性.访问地址 如:http: ...
- 中国天气网天气预报API接口城市代码,XML格式,数据具体到县、区级别
2019独角兽企业重金招聘Python工程师标准>>> 说到开发天气预报,就需要找一个开放接口了,接口有很多,不过个人觉得,中国天气网的数据比较准确,而且也有权威性.访问地址如:ht ...
最新文章
- hdu5025(bfs,状态压缩)
- 在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题
- LeetCode 110. 平衡二叉树(二叉树高度)
- 如何解决使用mac聚焦搜索无法搜索软件的情况
- python tqdm自定义更新进度条
- scala学习-Description	Resource	Path	Location	Type value toDF is not a member of org.apache.spark.rdd.R
- Java教程:Java选择结构和循环结构的总结
- CURL 错误码 中文翻译
- python基础编程语法-Python基础语法一
- 正则表达式那些事儿(一)
- atom无法安装插件的解决方法之一
- 【学习笔记】在KEIL中stm32移植51代码时位定义变量的替换
- amd显卡Linux查看显存,通过软件查看显存参数_显卡_显卡技术应用-中关村在线
- 我的创业项目steam游戏王子斗恶龙(含技术透露)
- 【源码好又多】springboot后台框架
- C语言简单的键盘玩扫雷小游戏(完结)
- 线程与蓝牙:物联网连接的 VHS 与 Betamax?
- 重磅!《中国迈向新一代人工智能》全文来了。道翰天琼认知智能平台为您揭秘新一代人工智能-1。
- 数字IC后端实现TOP Floorplan专家秘籍
- Matlab Tips: 高效实用的快捷命令