开发 出行解决方案接入规范 行程前-相关服务 选择目的地 搜索POI-iOS

搜索POI-iOS 最后更新时间: 2021年01月22日

概述

通过兴趣点搜索, 实现乘客选择目的地, 进而实现车辆估价&路径导航等功能, 是乘客端功能中必要的能力. 高德提供了千万级别的 POI(Point of Interest,兴趣点).在地图表达中,一个 POI 可代表一栋大厦、一家商铺、一处景点等等。通过POI搜索,完成找餐馆、找景点、找厕所等等的功能.地图 SDK 的搜索功能提供多种获取 POI 数据的接口.

关键词检索POI

关键字检索介绍

根据关键字检索适用于在某个城市搜索某个名称相关的POI,例如:查找北京市的“肯德基”.

注意:

1、关键字未设置城市信息(默认为全国搜索)时,如果涉及多个城市数据返回,仅会返回建议城市,请根据APP需求,选取城市进行搜索.

2、不设置POI的类别,默认返回“餐饮服务”、“商务住宅”、“生活服务”这三种类别的POI,下方提供了POI分类码表,请按照列表内容设置希望检索的POI类型.(建议使用POI类型的代码进行检索)

使用关键字检索

第 1 步,引入头文件

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

Objective-CSwift

#import <AMapFoundationKit/AMapFoundationKit.h>

#import <AMapSearchKit/AMapSearchKit.h>

第 2 步,配置Key

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

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

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

Objective-CSwift

[AMapServices sharedServices].apiKey = @"您的key";

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

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

Objective-CSwift

[AMapSearchServices sharedServices].apiKey = @"您的key";

第 3 步,定义 AMapSearchAPI

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

第 4 步,构造 AMapSearchAPI

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

Objective-CSwift

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

第 5 步,设置关键字检索参数

进行关键字检索的请求参数类为 AMapPOIKeywordsSearchRequest,其中 keywords 是必设参数.types 为搜索类型.

Objective-CSwift

AMapPOIKeywordsSearchRequest *request = [[AMapPOIKeywordsSearchRequest alloc] init];
    
request.keywords            = @"北京大学";
request.city                = @"北京";
request.types               = @"高等院校";
request.requireExtension    = YES;
    
/*  搜索SDK 3.2.0 中新增加的功能,只搜索本城市的POI。*/
request.cityLimit           = YES;
request.requireSubPOIs      = YES;

第 6 步,发起POI关键字搜索

调用 AMapSearchAPI 的 AMapPOIKeywordsSearch 并发起关键字检索.

Objective-CSwift

[self.search AMapPOIKeywordsSearch:request];

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

当检索成功时,会进到 onPOISearchDone 回调函数中,通过解析 AMapPOISearchResponse 对象把检索结果在地图上绘制点展示出来.

说明:

1)可以在回调中解析 response,获取 POI 信息.

2)response.pois 可以获取到 AMapPOI 列表,POI 详细信息可参考 AMapPOI 类.

3)若当前城市查询不到所需 POI 信息,可以通过 response.suggestion.cities 获取当前 POI 搜索的建议城市.

4)如果搜索关键字明显为误输入,则可通过 response.suggestion.keywords 属性得到搜索关键词建议.

Objective-CSwift

/* POI 搜索回调. */
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response
{
    if (response.pois.count == 0)
    {
        return;
    }
    
    //解析response获取POI信息,具体解析见 Demo
}

点我下载POI分类码表

注意:

  • 关键词搜索中, 会返回子POI信息(childrenPOI), 如果存在此类POI需在搜索展示找那个展示出来, 例如: 搜索首都机场,  搜索中展示首都机场-T3航站楼
  • 搜索中返回POIID, 可用作导航中导航目的地, 进而解决因POI过大造成绕路的问题

输入内容自动提示

输入提示查询介绍

输入提示是指根据用户输入的关键词,给出相应的提示信息,将最有可能的搜索词呈现给用户,以减少用户输入信息,提升用户体验.如:输入“方恒”,提示“方恒国际中心A座”,“方恒购物中心”等.

输入提示返回的提示语对象 AMapTip 有多种属性,可根据该对象的返回信息,配合其他搜索服务使用,完善您应用的功能.如:

1)uid为空,location为空,该提示语为品牌词,可根据该品牌词进行POI关键词搜索.

2)uid不为空,location为空,为公交线路,根据uid进行公交线路查询.

3)uid不为空,location也不为空,是一个真实存在的POI,可直接显示在地图上.

使用输入提示查询

第 1 步,引入头文件

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

Objective-CSwift

#import <AMapFoundationKit/AMapFoundationKit.h>

#import <AMapSearchKit/AMapSearchKit.h>

第 2 步,配置Key

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

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

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

Objective-CSwift

[AMapServices sharedServices].apiKey = @"您的key";

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

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

Objective-CSwift

[AMapSearchServices sharedServices].apiKey =@"您的key";

第 3 步,定义 AMapSearchAPI

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

第 4 步,构造 AMapSearchAPI

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

Objective-CSwift

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

第 5 步,设置输入提示查询的参数

请求参数类为 AMapInputTipsSearchRequestkeywords是必填参数.

Objective-CSwift

AMapInputTipsSearchRequest *tips = [[AMapInputTipsSearchRequest alloc] init];
tips.keywords = key;
tips.city     = @"北京";
//   tips.cityLimit = YES; 是否限制城市

第 6 步,发起输入提示语查询

Objective-CSwift

[self.search AMapInputTipsSearch:tips];

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

当检索成功时,会进到 onInputTipsSearchDone 回调函数中,通过解析 AMapInputTipsSearchResponse 对象获取输入提示词进行展示.

说明:

1)可以在回调中解析 response,获取提示词.

2)通过 response.tips 可以获取到 AMapTip 列表,Poi详细信息可参考 AMapTip 类(包含:adcode、district、name等信息).

Objective-CSwift

/* 输入提示回调. */
- (void)onInputTipsSearchDone:(AMapInputTipsSearchRequest *)request response:(AMapInputTipsSearchResponse *)response
{
    //解析response获取提示词,具体解析见 Demo
}

注意事项

  • 更多功能请查看地图SDK-POI检索相关文档: Android地图 / iOS地图
  • 请注意:使用上述功能需要下载地图SDK,导入搜索功能的jar包.
  • 地图SDK V4.1.3版本开始,SDK不再提供 com.amap.api.maps.overlay 包下的overlay,已在官方demo中开源.
返回顶部 示例中心 常见问题 智能客服 公众号
二维码