我用的接口是百度开放平台上的,先要创建一个服务号,获取AK
详细参见http://jingyan.baidu.com/article/4dc408489fa6b3c8d946f137.html
如下,百度的接口数据说明:
天气查询
车联网API
接口说明
天气API主要应用场景:根据经纬度/城市名查询天气的结果。
注意事项:
1、天气API仅提供给汽车相关产品小规模免费使用,非车联网相关的产品一概无法提供支持!
2、天气API无法提供超过5000次的天气服务免费支持!
如需商业合作请将公司名称、产品介绍等先关信息发送至(liushuo01@baidu.com)
接口示例
接口参数说明
参数类型 | 参数名称 | 是否必须 | 具体描述 |
---|---|---|---|
String | ak | true | 开发者密钥 |
String | sn | false | 若用户所用ak的校验方式为sn校验时该参数必须。 (sn生成算法) |
String | location | true | 支持经纬度和城市名两种形式,一次请求最多支持15个城市,之间用"|"分隔,同一个城市的经纬度之间用 "," 分隔。举例:location=116.43,40.75|120.22,43,33或者是location=北京|上海|广州。 |
String | output | false | 输出的数据格式,默认为xml格式,当output设置为’json’时,输出的为json格式的数据; |
String | coord_type | false | 请求参数坐标类型,默认为gcj02经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标。wgs84表示gps获取的坐标。 |
String | callback | false | 将json格式的返回值通过callback函数返回以实现jsonp功能。举例:callback=showLocation(JavaScript函数名)。 |
返回结果
参数名称 | 含义 | 说明 | |
---|---|---|---|
currentCity | 当前城市 | 返回城市名 | |
status | 返回结果状态信息 | 请求状态,如果成功返回0,如果失败返回其他数字,详细见状态码附录。 | |
date | 当前时间 | 年-月-日 | |
results | 天气预报信息 | 白天可返回近期3天的天气情况(今天、明天、后天)、晚上可返回近期4天的天气情况(今天、明天、后天、大后天) | |
results.currentCity | 当前城市 | ||
results.pm25 | pm2.5 | 0~50,一级,优,绿色; 51~100,二级,良,黄色; 101~150,三级,轻度污染,橙色; 151~200,四级,中度污染 ,红色; 201~300,五级,重度污染 ,紫色; >300,六级,严重污染, 褐红色。 图标分类示意图: | |
results.index.title | 指数title | 分为:穿衣、洗车、感冒、运动、紫外线这几个类型。 | |
results.index.zs | 指数取值 | 不同指数描述不一 | |
results.index.tipt | 指数含义 | 指数含义 | |
results.index.des | 指数详情 | 指数详情 | |
results.weather_data | weather_data.date | 天气预报时间 | |
weather_data.dayPictureUrl | 白天的天气预报图片url | ||
weather_data.nightPictureUrl | 晚上的天气预报图片url | ||
weather_data.weather | 天气状况 | 常见天气情况(“|”分隔符):晴|多云|阴|阵雨|雷阵雨|雷阵雨伴有冰雹|雨夹雪|小雨|中雨|大雨|暴雨|大暴雨|特大暴雨|阵雪|小雪|中雪|大雪|暴雪|雾|冻雨|沙尘暴|小雨转中雨|中雨转大雨|大雨转暴雨|暴雨转大暴雨|大暴雨转特大暴雨|小雪转中雪|中雪转大雪|大雪转暴雪|浮尘|扬沙|强沙尘暴|霾 | |
weather_data.wind | 风力 | 风力值 | |
weather_data.temperature | 温度 | 温度范围,如:29~22℃ |
返回xml格式的数据
返回json格式的数据
public function BaiduWeather($object, $location)
{
$url_weather = "http://api.map.baidu.com/telematics/v3/weather?location=" . $location . "&output=json";
$url_weather = $url_weather . "&ak=Kg7BQmPU7op";
$jsonStyle = file_get_contents($url_weather);
$jsonStr = json_decode($jsonStyle, true);
$city = $jsonStr[results][0][currentCity] . "\n" . "PM2.5: " . $jsonStr[results][0][pm25] . "\n";
foreach ($jsonStr[results][0][index] as $index) {
$city = $city . $index[title] . ": " . $index[zs] . "\n" . $index[tipt] . ": " . $index[des] . "\n";
}
$data_title = array();
$data_picUrl = array();
// 将获得的数据写到图文结构中
// global $data_title,$data_picUrl;
foreach ($jsonStr[results][0][weather_data] as $weather_data) {
$data_title[] = $weather_data[date] . "," . $weather_data[weather] . "," . $weather_data[wind] . "," . $weather_data[temperature];
$data_picUrl[] = $weather_data[dayPictureUrl];
}
$openid = $object->FromUserName;
$data = '{
"touser":"' . $openid . '",
"msgtype":"news",
"news":{
"articles":[
{
"title":"' . $location . '天气预报",
"description":"",
"picurl":"",
"url":""
},
{
"title":"' . $data_title[0] . '",
"description":"",
"picurl":"' . $data_picUrl[0] . '",
"url":""
},
{
"title":"' . $data_title[1] . '",
"description":"",
"picurl":"' . $data_picUrl[1] . '",
"url":""
},
{
"title":"' . $data_title[2] . '",
"description":"",
"picurl":"' . $data_picUrl[2] . '",
"url":""
},
{
"title":"' . $data_title[3] . '",
"description":"",
"picurl":"' . $data_picUrl[3] . '",
"url":""
}
]
}
}';
// global $url1,$data;
$this->https_request($GLOBALS['url1'], $data);
return $this->transmitText($object, $city);
}