网上找了很多天气接口的文章,大都是只介绍,很难找到成品,用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 调用接口生成天气预报 三级联动城市列表 仿中国天气网界面...相关推荐

  1. 什么是短网址?如何调用接口生成短地址?

    随着网络应用的深入和普及,网址资源越来越少了,长尾网址也派上用场了,只是网址太长不方便识别与记录.因此,就有了短网址替代长网址的技术接口. 随着SEO的重要性越来越明显,在推广的时候如果把网页链接缩短 ...

  2. android仿ios城市选择,Android 省市区三级联动选择器(仿iOS滚轮实现)

    前言 在实际的项目中需要使用到省市区三级联动的功能,在网上找来找去,都没有找到一个合适的库, 所以自己就封装了一个,不需要自己添加数据源,直接引用即可,一行代码搞定城市选择.怎么简单,怎么方便,怎么来 ...

  3. html5手机移动端三级联动城市选择器,jquery移动端省市县(区)三级联动插件

    最近刚做完一个版本的项目,闲暇时间,就索性把项目中需要用到的插件都自己写了一个,毕竟自己动手丰衣足食才是最重要,自己写的,可以应对各种项目需求,今天又把手机端的省市区三级联动选择功能编写了一个插件出来 ...

  4. layui省市区三级联动城市选择

    index.html <!doctype html> <html> <head> <meta charset="utf-8"> &l ...

  5. html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...

    [实例简介] [实例截图] [核心代码] jQuery手机端收货地址选择代码 - 站长素材 默认调用 所在地区: 设置默认值 所在地区: /** * 默认调用 */ !function () { va ...

  6. html5手机移动端三级联动城市选择器

    //我的地址 var area1 = new LArea(); area1.init({ 'trigger': '#demo1', //触发选择控件的文本框,同时选择完毕后name属性输出到该位置 ' ...

  7. 天气预报API接口 : 城市对应码(中国天气网)

    文章目录 天气预报接口api(中国天气网) 中国天气网城市代码: 相关阅读 · 资源: 天气预报接口api(中国天气网) 中国天气 weather.com http://m.weather.com.c ...

  8. 中国天气网 天气预报API 国家气象局 根据城市名称抓取城市ID,XML格式、JSON格式、图片代码...

    为什么80%的码农都做不了架构师?>>>    说到开发天气预报,就需要找一个开放接口了,接口有很多,不过个人觉得,中国天气网的数据比较准确,而且也有权威性.访问地址 如:http: ...

  9. 中国天气网天气预报API接口城市代码,XML格式,数据具体到县、区级别

    2019独角兽企业重金招聘Python工程师标准>>> 说到开发天气预报,就需要找一个开放接口了,接口有很多,不过个人觉得,中国天气网的数据比较准确,而且也有权威性.访问地址如:ht ...

最新文章

  1. hdu5025(bfs,状态压缩)
  2. 在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题
  3. LeetCode 110. 平衡二叉树(二叉树高度)
  4. 如何解决使用mac聚焦搜索无法搜索软件的情况
  5. python tqdm自定义更新进度条
  6. scala学习-Description Resource Path Location Type value toDF is not a member of org.apache.spark.rdd.R
  7. Java教程:Java选择结构和循环结构的总结
  8. CURL 错误码 中文翻译
  9. python基础编程语法-Python基础语法一
  10. 正则表达式那些事儿(一)
  11. atom无法安装插件的解决方法之一
  12. 【学习笔记】在KEIL中stm32移植51代码时位定义变量的替换
  13. amd显卡Linux查看显存,通过软件查看显存参数_显卡_显卡技术应用-中关村在线
  14. 我的创业项目steam游戏王子斗恶龙(含技术透露)
  15. 【源码好又多】springboot后台框架
  16. C语言简单的键盘玩扫雷小游戏(完结)
  17. 线程与蓝牙:物联网连接的 VHS 与 Betamax?
  18. 重磅!《中国迈向新一代人工智能》全文来了。道翰天琼认知智能平台为您揭秘新一代人工智能-1。
  19. 数字IC后端实现TOP Floorplan专家秘籍
  20. Matlab Tips: 高效实用的快捷命令

热门文章

  1. seo外链建设(如何正确做好seo网站外链建设)
  2. python3数据经base64解码后带b'的解决办法
  3. Joy Catalog
  4. STA基础分析-setup和hold
  5. H3C交换机路由器配置命令大全
  6. DCG【Dual Conversion Gain】是什么?
  7. 程序ajax请求公共组件app-jquery-http.js中url参数部分的项目应用
  8. Android 资源文件错误排查 Process 'command ' 等错误排查
  9. 学校计算机考试插u盘,一种带USB插头的计算机考试防U盘作弊装置的制作方法
  10. photoshop图像合成教程之将人物和风景合成一张图片