浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
更新时间:2020-09-14
简介

国内天气查询
国内天气查询服务分为基础服务和高级权限。
在基础服务中,用户可通过行政区划代码查询实时天气信息及未来5天天气预报。
在高级权限中,用户可通过经纬度查询实时天气信息、未来7天天气预报及未来24小时逐小时预报。同时,用户还可以通过高级权限获取国内空气质量指数、生活指数、气象预警等丰富信息。

海外天气查询
海外天气查询服务分为基础服务和高级权限。
在基础服务中,用户可通过行政区划代码查询实时天气信息及未来5天天气预报。
在高级权限中,用户可通过经纬度查询实时天气信息、未来7天天气预报及未来24小时逐小时预报。同时,用户还可以通过高级权限获取云量、能见度、降水量等信息。

高级权限需付费开通,您可以联系我们开通15天试用并了解更多信息。

实现步骤
1引入头文件

国内天气查询服务功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework

Objective-C
Swift
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
2初始化天气查询服务对象
Objective-C
Swift
BMKWeatherSearch *search = [[BMKWeatherSearch alloc] init];
//初始化BMKWeatherSearch实例
let search = BMKWeatherSearch()
3设置天气查询服务代理
Objective-C
Swift
search.delegate = self;
search.delegate = self
4构造天气查询服务参数
Objective-C
Swift
BMKWeatherSearchOption* option = [[BMKWeatherSearchOption alloc] init];  
// 区县的行政区划编码
option.districtID = @"110108";
//天气服务类型,默认国内
option.serverType = BMKWeatherServerTypeDefault;
//天气数据类型
option.dataType = BMKWeatherDataTypeAll;
//语言类型
option.languageType = BMKLanguageTypeEnglish;
//初始化请求参数类BMKWeatherSearchOption的实例
let option = BMKWeatherSearchOption()
// 区县的行政区划编码
option.districtID = "110108"
//天气服务类型,默认国内
option.serverType = BMKWeatherServerTypeDefault
//天气数据类型
option.dataType = BMKWeatherDataTypeAll
//语言类型
option.languageType = BMKLanguageTypeEnglish
5发起天气查询服务请求
Objective-C
Swift
/**
 *weather搜索
 *param weatherSearchOption      weather检索信息类
 *异步函数,返回结果在BMKWeatherSearchDelegate的onGetWeatherResult通知
 *return 成功返回YES,否则返回NO
 */
BOOL flag = [search weatherSearch:option];  
if (flag) {  
    NSLog(@"天气查询发送成功");  
}  else  {  
    NSLog(@"天气查询检索发送失败");  
}  
/**
 *weather搜索
 *param weatherSearchOption      weather检索信息类
 *异步函数,返回结果在BMKWeatherSearchDelegate的onGetWeatherResult通知
 *return 成功返回YES,否则返回NO
 */
let flag = search.weatherSearch(option)
if flag {
    print("天气查询检索发送成功")
} else {
    print("天气查询检索发送失败")
}
6实现代理方法,获取检索结果
Objective-C
Swift
/**
 天气查询结果回调
 
 @param searcher 检索对象
 @param result 天气查询结果
 @param error 错误码,@see BMKCloudErrorCode
 */
- (void)onGetWeatherResult:(BMKWeatherSearch *)searcher result:(BMKWeatherSearchResult *)result errorCode:(BMKSearchErrorCode)error {  
    if (error == BMK_SEARCH_NO_ERROR) {  
        //在此处理正常结果  
    }  
    else {  
        NSLog(@"查询失败");  
    }  
}
/**
 天气查询结果回调
 
 @param searcher 检索对象
 @param result 天气查询结果
 @param error 错误码,@see BMKCloudErrorCode
 */
func onGetWeatherResult(_ searcher: BMKWeatherSearch, result: BMKWeatherSearchResult, errorCode error: BMKSearchErrorCode) {
    if error == BMK_SEARCH_NO_ERROR {  
        //在此处理正常结果  
    }  
    else {  
        print("查询失败");  
    }  
}
7处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的BMKWeatherSearchPage。BMKWeatherSearchResult如下表

结果数据
含义
BMKWeatherSearchNow *realTimeWeather 天气实况数据
BMKWeatherSearchLocation *location 地理位置信息
NSArray <BMKWeatherSearchForecasts *> *forecasts 未来5天预报数据
NSArray <BMKWeatherSearchForecastForHours *> * forecastHours; 未来24小时逐小时预报,高级字段
NSArray <BMKWeatherSearchIndexes *> * lifeIndexes 生活指数数据,高级字段
NSArray <BMKWeatherSearchAlerts *> * weatherAlerts 气象预警数据,高级字段


注意:使用经纬度loaction字段发起天气检索和返回结果BMKSuggestionSearchResult中部分字段需要申请高级服务权限,首先需要进行企业认证, 之后需要提交工单申请这个权限, 并详细说明使用场景, 包括但不限于, 使用开放平台哪些产品及服务, 应用在贵方哪些产品及应用上以及该产品或应用的相关介绍, 预估使用配额多少等。另外需附带AK信息。

部分错误码对照表
错误码 常见原因
BMK_SEARCH_NO_ERROR 检索结果正常返回
BMK_SEARCH_SERVER_NO_PERMISSIONS 需开通权限功能,用户在API控制台中创建或设置某APP的时候禁用了某项服务,若需开通权限,可进入API控制台为AK勾选对应服务
BMK_SEARCH_SERVER_NO_ADVANCED_PERMISSIONS 用户需开通高级权限功能,如:高级权限才允许使用location字段;查询的数据类型与用户类型不匹配;
BMK_SEARCH_SERVER_DISTRICT_NO_DATA 所在地区无数据覆盖
BMK_SEARCH_SERVER_DISTRICT_ID_ERROR 天气服务查询的区域编码与约定的编码不符
BMK_SEARCH_RESULT_NOT_FOUND 没有找到检索结果
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消