开发者社区> 方倍工作室> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

微信公众平台开发(4)天气预报

简介: 微信公众平台 微信公众平台开发 消息接口 微信天气预报 天气预报接口 中国天气网 原文:http://www.cnblogs.com/txw1958/archive/2013/02/07/weixin-if4-weather-forecast.html    一、数据接口 百度提供天气预报查询接口API,可以根据经纬度/城市名查询天气情况,我们可以在微信公众平台开发中调用这一接口。
+关注继续查看

微信公众平台 微信公众平台开发 消息接口 微信天气预报 天气预报接口 中国天气网

原文:http://www.cnblogs.com/txw1958/archive/2013/02/07/weixin-if4-weather-forecast.html 

 

一、数据接口

百度提供天气预报查询接口API,可以根据经纬度/城市名查询天气情况,我们可以在微信公众平台开发中调用这一接口。

接口

http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourak

接口参数说明

参数类型 参数名称 是否必须 具体描述
String location true 输入城市名或经纬度,城市名称如:北京或者131,经纬度格式为lng,lat坐标如: location=116.305145,39.982368;全国值为all,返回省会城市自治区,港澳台天气情况多城市天气预报中间"|"分隔,location=116.305145,39.982368| 122.305145,36.982368|….
String output false 输出的数据格式,默认为xml格式,当output设置为’json’时,输出的为json格式的数据;
String coord_type false 请求参数坐标类型,默认为gcj02经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标。wgs84表示gps获取的坐标。

返回结果

参数名称 含义 说明
currentCity 当前城市 返回城市名
status 返回结果状态信息  
date 当前时间 年-月-日
results 天气预报信息 白天可返回近期3天的天气情况(今天、明天、后天)、晚上可返回近期4天的天气情况(今天、明天、后天、大后天)
results.currentCity 当前城市  
results.weather_data weather_data.date 天气预报时间  
weather_data.dayPictureUrl 白天的天气预报图片url  
weather_data.nightPictureUrl 晚上的天气预报图片url  
weather_data.weather 天气状况 所有天气情况(”|”分隔符):晴|多云|阴|阵雨|雷阵雨|雷阵雨伴有冰雹|雨夹雪|小雨|中雨|大雨|暴雨|大暴雨|特大暴雨|阵雪|小雪|中雪|大雪|暴雪|雾|冻雨|沙尘暴|小雨转中雨|中雨转大雨|大雨转暴雨|暴雨转大暴雨|大暴雨转特大暴雨|小雪转中雪|中雪转大雪|大雪转暴雪|浮尘|扬沙|强沙尘暴|霾
weather_data.wind 风力  
weather_data.temperature 温度  

返回json格式的数据

{
    "error": 0,
    "status": "success",
    "date": "2014-05-03",
    "results": [
        {
            "currentCity": "北京",
            "weather_data": [
                {
                    "date": "周六(今天, 实时:23℃)",
                    "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/leizhenyu.png",
                    "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
                    "weather": "雷阵雨转多云",
                    "wind": "北风5-6级",
                    "temperature": "24 ~ 11℃"
                },
                {
                    "date": "周日",
                    "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
                    "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                    "weather": "多云转晴",
                    "wind": "北风4-5级",
                    "temperature": "19 ~ 8℃"
                },
                {
                    "date": "周一",
                    "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/qing.png",
                    "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                    "weather": "晴",
                    "wind": "微风",
                    "temperature": "21 ~ 9℃"
                },
                {
                    "date": "周二",
                    "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
                    "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                    "weather": "多云转晴",
                    "wind": "微风",
                    "temperature": "21 ~ 10℃"
                }
            ]
        }
    ]
}

 

二、开发实现

获取百度天气json数据的代码如下:

<?php

// var_dump(getWeatherInfo("深圳"));

function getWeatherInfo($cityName)
{
    if ($cityName == "" || (strstr($cityName, "+"))){
        return "发送天气+城市,例如'天气深圳'";
    }
    $url = "http://api.map.baidu.com/telematics/v3/weather?location=".urlencode($cityName)."&output=json&ak=ECe3698802b9bf4457f0e01b544eb6aa";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    $result = json_decode($output, true);
    if ($result["error"] != 0){
        return $result["status"];
    }
    $curHour = (int)date('H',time());
    $weather = $result["results"][0];
    $weatherArray[] = array("Title" =>$weather['currentCity']."天气预报", "Description" =>"", "PicUrl" =>"", "Url" =>"");
    for ($i = 0; $i < count($weather["weather_data"]); $i++) {
        $weatherArray[] = array("Title"=>
            $weather["weather_data"][$i]["date"]."\n".
            $weather["weather_data"][$i]["weather"]." ".
            $weather["weather_data"][$i]["wind"]." ".
            $weather["weather_data"][$i]["temperature"],
        "Description"=>"", 
        "PicUrl"=>(($curHour >= 6) && ($curHour < 18))?$weather["weather_data"][$i]["dayPictureUrl"]:$weather["weather_data"][$i]["nightPictureUrl"], "Url"=>"");
    }
    return $weatherArray;
}


?>

在微信中调用的方式如下:

 

<?php
/*
    方倍工作室
    CopyRight 2013 All Rights Reserved
*/

    private function receiveText($object)
    {
        $keyword = trim($object->Content);

        include("weather2.php");
        $content = getWeatherInfo($keyword);
        // $result = $this->transmitText($object, count($content));
        $result = $this->transmitNews($object, $content);
        return $result;
    }
   
}

 

 

 

三,效果演示

直接发送城市名称查询天气预报

 

四、其他方式查询

除了城市名称之外,还可以使用邮编、电话区号等方式进行查询,其实是使用转换的方式,比如010是北京的电话区号,就转去查询北京的天气。

你可以下载 weather.sql.zip ,该数据库是方倍工作室整理收集的主要城市、邮编、区号、拼音、及简拼等城市资料。

开发完成之后,效果如图如示:

使用城市名称、拼音、电话区号查询天气预报

  

使用邮编、地址位置、语音(声音)查询天气预报

  

 

 

 

 

 

购买天气预报功能源码 点击进入

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微信公众平台开发视频教程
1. 微信小程序开发视频教程  最新最热门的微信开发创业赚钱技术 微信小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。小程序所使用的语言是自己的视图层描述语言WXML和WXSS,以及JavaScript。
1583 0
微信公众平台开发书籍推荐
关键字:微信开发图书 微信公众平台开发书籍 微信图书 微信开发书籍 微信图书推荐 微信开发图书推荐  本文介绍了当前图书市场上最主要的微信公众平台开发类书籍,并对每本书的特色做了简要点评,供有需要购买的读者进行参考。
2141 0
微信公众平台开发培训
课程介绍 本次课主要内容是如何对微信公众账号进行再次开发, 不仅系统讲解微信公众平台的搭建以及使用中的难点,更重要的是系统讲解微信公众账号的开发流程和方法,通过一系列常见的公众账号应用实例的开发全过程讲解和演示,对你将来的微信公众账号的开发有非常强的实践和指导意义!   课程体系
778 0
微信公众平台开发(76) 获取用户基本信息
本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称、头像、性别、国家、省份、城市、语言。本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录。
1334 0
微信公众平台开发(70)经济指标财经大事
微信公众平台开发 汇通网 财经日历 财经数据 经济指标数据作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin70-finance.html   一、数据来源 地址:http://www.
770 0
微信公众平台开发入门教程(四)获取接收消息
定义消息类型处理函数 在接收到的消息中根据消息类型,定义不同的消息处理函数, public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr))...
844 0
微信公众平台开发(60)每日英语
微信公众平台开发 微信公众平台开发模式 企业微信公众平台 每日英语 每日一句 听力 阅读 作文 词汇 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin-60-english.
1137 0
微信公众平台消息接口开发(7)快递查询
微信公众平台消息接口 微信公众平台开发 微信公众平台开发模式  快递查询 作者:方倍工作室原文:http://www.cnblogs.com/txw1958/archive/2013/03/12/weixin-if7-express.
2231 0
+关注
方倍工作室
CSDN博客技术专家。已出版《微信公众平台开发最佳实践》第一版、第二版及第三版,《企业微信公众平台开发实战》等书籍。
541
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载