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

拖拽选择目的地-iOS 最后更新时间: 2021年01月22日

概述

通过乘客端拖拽定位指针, 进行地图上选点, 让用户选择相关目的地.

关键流程

  1. 地图拖拽定位指针, 确定目的地图面位置(地图SDK功能, 详情查看地图SDK)
  2. 通过图面位置确定定位经纬度(x,y)
  3. 获取POI信息, 通过POI搜索 ,进行周边搜索供用户选择明确POI ( 本文重点介绍 )

周边POI搜索

适用于搜索某个位置附近的POI,可设置POI的类别,具体查询所在位置的餐饮类、住宅类POI,例如:查看国贸附近餐饮等需求与关键字检索的唯一区别需要通过 PoiSearch 的 setBound 方法设置圆形查询范围.

说明:

1、支持指定查询POI的类别。高德地图的POI类别共20个大类,分别为:汽车服务、汽车销售、汽车维修、摩托车服务、餐饮服务、购物服务、生活服务、体育休闲服务、医疗保健服务、住宿服务、风景名胜、商务住宅、政府机构及社会团体、科教文化服务、交通设施服务、金融保险服务、公司企业、道路附属设施、地名地址信息、公共设施,同时,每个大类别都还有二级以及三级的细小划分,具体的POI类别请参考:POI分类编码表.

2、不设置POI的类别,默认返回“餐饮服务”、“商务住宅”、“生活服务”这三种类别的POI.

 

使用周边检索

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

[AMapSearchServices sharedServices].apiKey = @"您的key";
AMapSearchServices.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 步,设置周边检索的参数

请求参数类为 AMapPOIAroundSearchRequestlocation是必设参数.

AMapPOIAroundSearchRequest *request = [[AMapPOIAroundSearchRequest alloc] init];
    
request.location            = [AMapGeoPoint locationWithLatitude:39.990459 longitude:116.481476];
request.keywords            = @"电影院";
/* 按照距离排序. */
request.sortrule            = 0;
request.requireExtension    = YES;
let request = AMapPOIAroundSearchRequest()
request.tableID = TableID
        
request.location = AMapGeoPoint.location(withLatitude: CGFloat(39.990459), longitude: CGFloat(116.481476))
request.keywords = "电影院"
request.requireExtension = true

第 6 步,发起周边检索

调用 AMapSearchAPI 的 AMapPOIAroundSearch 并发起周边检索.

[self.search AMapPOIAroundSearch:request];
search.aMapPOIAroundSearch(request)

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

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

说明:

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

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

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

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

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


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