高德地图开发iOS 地图SDK获取地图数据—获取天气数据

高德地图开发iOS 地图SDK获取地图数据—获取天气数据

获取天气数据 最后更新时间: 2021年01月22日

注意:下面介绍的功能使用的是地图SDK的搜索功能,需要在工程中导入搜索功能库(AMapSearchKit.framework)

基本介绍

通过天气查询,可获取城市的实时天气和今天以及未来3天的天气预报,可结合定位和逆地理编码功能使用,查询定位点所在城市的天气情况。注意:仅支持中国部分地区数据(台湾省目前没有数据)返回

天气查询是一个可用来改善app体验的功能,如:在跑步类app中加入天气的提醒;出行前了解天气情况以便安排行程。

使用说明

第 1 步,引入头文件

引入 AMapFoundationKit.h 和 AMapSearchKit.h 这两个头文件。

Objective-C
Swift

#import <AMapFoundationKit/AMapFoundationKit.h>

#import <AMapSearchKit/AMapSearchKit.h>
//在桥接文件中引入头文件
#import <AMapFoundationKit/AMapFoundationKit.h>

#import <AMapSearchKit/AMapSearchKit.h>

第 2 步,配置Key

在使用搜索功能时,需要添加 Key。

如果您使用的是搜索库(AMapSearchKit.framework) v4.x 版本需要引入基础 SDK AMapFoundationKit.framework ,设置 Key 的方法如下:

iOS 搜索功能 v4.x 版本设置 Key:

Objective-C
Swift

[AMapServices sharedServices].apiKey = @"您的key";
AMapServices.shared().apiKey = "您的Key"

如果您使用的是搜索功能 v3.x 或之前版本,请您尽快更新。

iOS 搜索功能 v3.x 版本设置 Key:

Objective-C
Swift

[AMapSearchServices sharedServices].apiKey = @"您的key";
AMapSearchServices.shared().apiKey = "您的Key"

第 3 步,定义 AMapSearchAPI

定义主搜索对象 AMapSearchAPI ,并继承搜索协议<AMapSearchDelegate>。

第 4 步,构造 AMapSearchAPI

构造主搜索对象 AMapSearchAPI,并设置代理。

Objective-C
Swift

self.search = [[AMapSearchAPI alloc] init];
self.search.delegate = self;
search = AMapSearchAPI()
search.delegate = self

第 5 步,设置天气查询参数

天气查询的请求参数类为 AMapWeatherSearchRequestcity(城市)为必设参数,type(气象类型)为可选,包含有两种类型:AMapWeatherTypeLive为实时天气;AMapWeatherTypeForecase为预报天气,默认为 AMapWeatherTypeLive。

Objective-C
Swift

AMapWeatherSearchRequest *request = [[AMapWeatherSearchRequest alloc] init];
request.city = @"110000";
request.type = AMapWeatherTypeLive; //AMapWeatherTypeLive为实时天气;AMapWeatherTypeForecase为预报天气
let req:AMapWeatherSearchRequest! = AMapWeatherSearchRequest.init()
        
req.city = "110000"

//AMapWeatherType.live为实时天气;AMapWeatherType.forecast为预报天气
req.type = AMapWeatherType.live

第 6 步,发起天气查询参数

通过调用 AMapSearchAPI 的 AMapWeatherSearch 方法发起天气查询。

Objective-C
Swift

[self.search AMapWeatherSearch:request]; 
self.search.aMapWeatherSearch(req)

第 7 步,在回调中处理数据

当查询成功时,会进到 onWeatherSearchDone 回调函数,通过回调函数,可获取查询城市实时的以及未来3天的天气情况。

说明:

1)通过 response.lives 获取城市对应实时天气数据信息,实时天气详细信息参考 AMapLocalWeatherLive 类。

2)通过 response.forecasts 获取城市对应预报天气数据信息,预报天气详细信息参考 AMapLocalWeatherForecast 类。

3)可查询未来3天的预报天气,通过 AMapLocalWeatherForecast.casts 获取预报天气列表。

Objective-C
Swift

- (void)onWeatherSearchDone:(AMapWeatherSearchRequest *)request response:(AMapWeatherSearchResponse *)response
{
    //解析response获取天气信息,具体解析见 Demo
}
func onWeatherSearchDone(_ request: AMapWeatherSearchRequest!, response: AMapWeatherSearchResponse!) {
   //解析response获取天气信息,具体解析见 Demo
}

第 8 步,处理失败查询

当检索失败时,会进入 didFailWithError 回调函数,通过该回调函数获取产生的失败的原因。

Objective-C
Swift

- (void)AMapSearchRequest:(id)request didFailWithError:(NSError *)error
{
    NSLog(@"Error: %@", error);
}
func aMapSearchRequest(_ request: Any!, didFailWithError error: Error!) {
    print("Error:\(error)")
}

运行程序,效果如下图所示: