示例中心
功能在线体验
控制台

高德 开发 iOS 地图SDK 开发指南 实用工具 附近派单功能

更新时间:2017年04月05日

简介

高德地图 iOS SDK V3.0.0 搜索包提供了附近派单功能。

 

  • 1.什么是附近功能?

附近派单功能是面向中小型O2O企业的一整套功能接口。iOS和Android端均支持这个功能,是连接前端SDK产品和云图的中间功能。

 

  • 2.附近能够做什么?

(1)O2O开发者通过附近功能提供的用户数据排名结果结合自有业务逻辑,更精准的把控业务订单派发和资源调度。

(2)O2O使用者通过附近功能找正在使用该应用的用户列表,找朋友、找客户等等。

 

  • 3.附近应用在哪些场景?

(1)根据距离排名,合理的推荐上门美甲服务的接单美甲师。

(2)根据行车距离排名,推荐最近的货车司机师傅接单。

(3)周围和我使用同一个app的用户。

 

  • 4.使用附近派单功能的流程

第一步、注册附近功能

在使用附近之前,需要对应用的密钥(Key)做相应的注册操作。支持多个移动端app做位置信息上传,及一个或多个app、或服务端之间实现位置信息排名的查看功能。

第二步、集成SDK

附近功能是iOS SDK搜索库提供的一个功能模块,需在官网下载包含附近功能的SDK,并将其集成到自己的开发环境中即可。

第三步、开发

完成附近功能的注册和SDK集成后,即可开始具体功能的开发工作,如需在服务端检索距离排名请参考后文云图检索服务部分的详细介绍。

注册附近功能

注册附近是使用其相应功能的基础前提。通过注册可实现一个或多个应用之间的关系绑定,实现后续的位置数据排名空间检索。

进入附近功能的绑定及管理页面

构造附近管理对象

在使用位置信息上传之前,需要构造附近管理对象。

示例代码如下:

@interface NearbyVewController ()<amapnearbysearchmanagerdelegate>
{
    AMapNearbySearchManager *_nearbyManager;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    _nearbyManager = [AMapNearbySearchManager sharedInstance];
    _nearbyManager.delegate = self;

}
</amapnearbysearchmanagerdelegate>

信息上传

附近功能支持单次上传和连续上传信息两种模式,以满足不同的用户场景。AMapNearbyUploadInfo 对象来存储上传数据,包括:坐标系类型、用户位置信息和用户业务逻辑id。

单次上传

单次上传的两个用户信息存在时间间隔(对应 AMapNearbySearchManager 的 uploadTimeInterval 属性 ),这个间隔最小7s,默认15s。连续上传时该参数自动失效。

单次上传的示例代码如下:

//构造上传数据对象
AMapNearbyUploadInfo *info = [[AMapNearbyUploadInfo alloc] init];
info.userID = @"1";//业务逻辑id
info.coordinateType = AMapSearchCoodinateTypeAMap;//坐标系类型
info.coordinate = CLLocationCoordinate2DMake(39, 114);//用户位置信息

if ([_nearbyManager uploadNearbyInfo:info])
{
    NSLog(@"YES");
}
else
{
    NSLog(@"NO");
}

连续上传

开始连续自动上传,需实现 <AMapNearbySearchManagerDelegate> 协议中的 nearbyInfoForUploading 回调。示例代码如下:

if (_nearbyManager.isAutoUploading)
{
    [_nearbyManager stopAutoUploadNearbyInfo];//关闭自动上传
}
else
{
    [_nearbyManager startAutoUploadNearbyInfo];//开启自动上传
}

- (AMapNearbyUploadInfo *)nearbyInfoForUploading:(AMapNearbySearchManager *)manager
{
    AMapNearbyUploadInfo *info = [[AMapNearbyUploadInfo alloc] init];
    info.userID = kUserID;
    info.coordinate = CLLocationCoordinate2DMake(39.004, 114.003);
    
    return info;
}

附近位置检索

附近功能还提供从上传的用户信息中,检索附近的用户的能力。检索过程支持距离、时间等约束条件;返回结果支持按照距离由近及远的排序。

同样,附近位置检索,我们也提供两种方式,详细介绍如下:

通过搜索SDK

同其他搜索服务的方法相同,包括一下4步:

1.构造主搜索对象 AMapSearchAPI;

2.配置检索参数 AMapNearbySearchRequest ;

3.发起附近搜索 AMapNearbySearch:;

4.最后在相应的回调函数 onNearbySearchDone:response:中解析数据。

核心代码如下(主搜索对象AMapSearchAPI构造可参考其他的搜索功能,详见:搜索服务中的描述。):

//构造AMapNearbySearchRequest对象,配置周边搜索参数
AMapNearbySearchRequest *request = [[AMapNearbySearchRequest alloc] init];
request.center = [AMapGeoPoint locationWithLatitude:39.001 longitude:114.002];//中心点
request.radius = 10000;//搜索半径
request.timeRange = 10000;//查询的时间
request.searchType = AMapNearbySearchTypeDriving;//驾车距离,AMapNearbySearchTypeLiner表示直线距离
//发起附近周边搜索 
[_search AMapNearbySearch:request];

//附近周边搜索回调
- (void)onNearbySearchDone:(AMapNearbySearchRequest *)request response:(AMapNearbySearchResponse *)response
{    
    if(response.infos.count == 0)
    {
        return;
    }

    for (AMapNearbyUserInfo *info in response.infos)
    {
        MAPointAnnotation *anno = [[MAPointAnnotation alloc] init];
        anno.title = info.userID;
        anno.subtitle = [[NSDate dateWithTimeIntervalSince1970:info.updatetime] descriptionWithLocale:[NSLocale currentLocale]];
        
        anno.coordinate = CLLocationCoordinate2DMake(info.location.latitude, info.location.longitude);
        
        [_mapView addAnnotation:anno];
    }
}

通过云图检索服务

通过请求串可以在业务逻辑服务中使用高德空间检索的能力对自有数据进行检索,获取按照距离、时间等维度约束的附近用户位置信息排序结果,详细内容请移步至这里查看。

清除用户信息

用户信息清除后,将不会再被检索到,比如接单的美甲师下班后可以清除其位置信息。

清除信息的核心代码如下:

[_nearbyManager clearUserInfoWithID:@"d2"];

清除用户信息后,会触发 onUserInfoClearedWithError: 回调,检查是否清除成功。核心代码如下:

- (void)onUserInfoClearedWithError:(NSError *)error
{
    if (error)
    {
        NSLog(@"clear error: %@", error);
    }
    else
    {
        NSLog(@"clear OK");
    }
}
移动端
示例中心
功能
在线体验
常见问题