展示附近车辆-iOS 最后更新时间: 2021年01月22日
一、获取key
1、创建新应用
进入控制台,创建一个新应用.如果您之前已经创建过应用,可直接跳过这个步骤.
2、添加新key
在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次输入应用名名称,选择绑定的服务为“iOS平台”,输入您的key名称Bundle ID,如下图所示:
需要注意的是: 1个KEY只能用于一个应用,1个Key在多个应用上使用会出现服务调用失败.
在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了.
如何获取 Bundle Identifier?
以下为您提供两种获取 Bundle Identifier 的方法.
方法一
通过代码获取,代码如下所示:
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
方法二
Xcode 切换到 General 标签,查看 Bundle Identifier,如下图所示:
3、开通权限
需要联系高德对应接口人开通附近运力权限.
4、配置key
引入基础SDK头文件#import <AMapFoundationKit/AMapFoundationKit.h>并添加如下示例代码,配置之前在官申请的高德Key.
[AMapServices sharedServices].apiKey = @"您的key";
二、集成SDK包
1、CocoaPods配置
配置podfile, 在里面添加如下配置:
platform :ios, '8.0'
target '您的工程名' do
pod 'AMap3DMap'
pod 'AMapSearch'
end
2、手动配置
参考http://lbs.amap.com/api/ios-sdk/guide/create-project/manual-configuration
三、快速接入
1、创建MANearbyCarController
self.nearbyCarController = [[MANearbyCarController alloc] initWithMapView:self.mapView delagate:self];
self.nearbyCarController.carImage = [UIImage imageNamed:@"car1"];
2、配置MANearbyCarController
1)初始化配置
/**
*@brief 在对应的地图delegate方法中调用此方法
*@param mapView 地图
*@param wasUserAction 是否用户触发
*/
- (void)mapView:(MAMapView *)mapView mapWillMoveByUser:(BOOL)wasUserAction {
[self.nearbyCarController mapView:mapView mapWillMoveByUser:wasUserAction];
}
/**
*@brief 在对应的地图delegate方法中调用此方法
*@param mapView 地图
*@param wasUserAction 是否用户触发
*/
- (void)mapView:(MAMapView *)mapView mapDidMoveByUser:(BOOL)wasUserAction {
[self.nearbyCarController mapView:mapView mapDidMoveByUser:wasUserAction];
}
/**
*@brief 在对应的地图delegate方法中调用此方法
*@param mapView 地图
*@param wasUserAction 是否用户触发
*/
- (void)mapView:(MAMapView *)mapView mapDidZoomByUser:(BOOL)wasUserAction {
[self.nearbyCarController mapView:mapView mapDidZoomByUser:wasUserAction];
}
/**
*@brief 在对应的地图delegate方法中调用此方法
*@param mapView 地图
*@param views annotationView
*/
- (void)mapView:(MAMapView *)mapView didAddAnnotationViews:(NSArray *)views {
[self.nearbyCarController mapView:mapView didAddAnnotationViews:views];
}
/**
*@brief 在对应的地图delegate方法中调用此方法
*@param mapView 地图
*@param annotation 标注
*@return 返回上车点功能需要的annotationview,一类是上车点,一类是大头针锚点
*/
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation {
if([self.nearbyCarController isInternalAnnotation:annotation]) {
return [self.nearbyCarController mapView:mapView viewForAnnotation:annotation];
}
return nil;
}
/**
*@brief 地图区域即将改变时会调用此接口
*@param mapView 地图View
*@param animated 是否动画
*/
- (void)mapView:(MAMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
[self.nearbyCarController mapView:mapView regionWillChangeAnimated:animated];
}
/**
* @brief地图区域改变完成后会调用此接口
*@param mapView 地图View
*@param animated 是否动画
*/
- (void)mapView:(MAMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
[self.nearbyCarController mapView:mapView regionDidChangeAnimated:animated];
}
四、使用接口获取周边车辆
MANearbyCarService.h
/**
* @brief 查询周围上车点
* @param request 请求
* @param callback 结果回调
* @return NSOperation 对象
*/
- (NSOperation *)queryNearbyCarsWith:(MANbCarRequest *)request callback:(void(^)(MANbCarResponse *response, NSError* error))callback;
高级功能
功能1: 同时请求多种车辆类型
构造方法(同时请求多种类型)
///多个车辆类型,以逗号','分隔 如"1,2"表示请求出租车和新能源车。所有分类, 1:出租车, 2:新能源, 3:舒适型, 4:豪华型, 5:商务型.
@property (nonatomic, assign) NSString *vehicleTypes;
功能2: 设置车辆图标
设置车辆图标
///小车图片
@property (nonatomic, strong) UIImage *carImage;
获取设置的车辆图标
///设置多种不同车辆类型的小车图片,其中key为车辆类型vehicleType对应的string
@property (nonatomic, strong) NSDictionary<NSString*, UIImage*> *carImages;
功能3: 设置车辆显示半径
设置显示半径
//请求半径,单位公里,默认2。最小值2,数字需为2的倍数。最大值以服务端为准,目前20
@property (nonatomic, assign) NSInteger radius;
功能4: 设置车辆显示最大数量
设置返回的最大车辆个数
///最大请求数,默认5,取值范围1-20
@property (nonatomic, assign) NSInteger maxCounts;
更多详情查看附近运力参考手册