开发 iOS 地图SDK 开发指南 获取地图数据 获取行政区划数据

获取行政区划数据 最后更新时间: 2021年01月22日

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

基本介绍

根据县(区)级行政区划名称可查询其下级区划的详细信息,如:中心点坐标、边界(省/市/区或县)等等。

目前能查询到街道级别的信息,例如:中国>山东省>济南市>历下区>舜华路街道(国>省>市>区>街道)。

使用说明

第 1 步,引入头文件

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

#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:

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

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

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

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

第 3 步,定义 AMapSearchAPI

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

第 4 步,构造 AMapSearchAPI

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

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

第 5 步,设置行政区划查询参数

AMapDistrictSearchRequest *dist = [[AMapDistrictSearchRequest alloc] init];
dist.keywords = name;
dist.requireExtension = YES;
let request = AMapDistrictSearchRequest()
request.keywords = keyword

request.requireExtension = true

第 6 步,发起行政区划查询

调用 AMapSearchAPI 的 AMapDistrictSearch 方法发起查询。

[self.search AMapDistrictSearch:dist];
search.aMapDistrictSearch(request)

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

当查询成功时,会进入 onDistrictSearchDone 回调函数,通过该回调函数,可获取到查询的行政区划的边界,将其显示在地图上。

说明:

1)通过 response.districts 返回该行政区划下级的区划对象。

2)通过 AMapDistrict.polylines 返回行政区划对应的边界构成的点数据,仅支持区县级别。

- (void)onDistrictSearchDone:(AMapDistrictSearchRequest *)request response:(AMapDistrictSearchResponse *)response
{
    
    if (response == nil)
    {
        return;
    }
    
    //解析response获取行政区划,具体解析见 Demo
}
func onDistrictSearchDone(_ request: AMapDistrictSearchRequest!, response: AMapDistrictSearchResponse!) {
    
    if response.count == 0 {
        return
    }
    
    //解析response获取行政区划,具体解析见 Demo
}

第 8 步,处理失败查询

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

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

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

返回顶部 示例中心 常见问题 智能客服 公众号
二维码