获取行政区划数据 最后更新时间: 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)")
}
运行程序,效果如下图所示: