国内天气查询
国内天气查询服务分为基础服务和高级权限。
在基础服务中,用户可通过行政区划代码查询实时天气信息及未来5天天气预报。
在高级权限中,用户可通过经纬度查询实时天气信息、未来7天天气预报及未来24小时逐小时预报。同时,用户还可以通过高级权限获取国内空气质量指数、生活指数、气象预警等丰富信息。
海外天气查询
海外天气查询服务分为基础服务和高级权限。
在基础服务中,用户可通过行政区划代码查询实时天气信息及未来5天天气预报。
在高级权限中,用户可通过经纬度查询实时天气信息、未来7天天气预报及未来24小时逐小时预报。同时,用户还可以通过高级权限获取云量、能见度、降水量等信息。
高级权限需付费开通,您可以联系我们开通15天试用并了解更多信息。
国内天气查询服务功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包BaiduMapAPI_Search.framework
#import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加 #import <BaiduMapAPI_Base/BMKBaseComponent.h> #import <BaiduMapAPI_Search/BMKSearchComponent.h>
BMKWeatherSearch *search = [[BMKWeatherSearch alloc] init];
//初始化BMKWeatherSearch实例 let search = BMKWeatherSearch()
search.delegate = self;
search.delegate = self
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
/** *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("天气查询检索发送失败") }
/** 天气查询结果回调 @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("查询失败"); } }
通过代理返回的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 | 没有找到检索结果 |