简介
推荐上⻋点功能是基于用户定位的周边范围内的道路信息、步行距离、方向等信息实现的,该数据依托百度位置大数据的沉淀积累,推送合理上⻋点,降低接驾时间。
使用说明
推荐上⻋点功能对普通开发者仅提供试用配额。 配额提升针对合作用户。如果有配额需求,请在工单反馈给我们。
实现步骤
推荐上车点检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包
#import <BaiduMapAPI_Base/BMKBaseComponent.h>#import <BaiduMapAPI_Search/BMKSearchComponent.h>
BMKRecommendStopSearch *search = [[BMKRecommendStopSearch alloc] init];
recommendStopSearch.delegate = self;
BMKRecommendStopSearchOption *stopSearchOption = [[BMKRecommendStopSearchOption alloc] init];// 推荐上车点经纬度 (必选)stopSearchOption.location = CLLocationCoordinate2DMake(40.047471, 116.31372);
BOOL flag = [search recommendStopSearch:stopSearchOption];if (flag) {NSLog(@"推荐上车点检索成功");} else {NSLog(@"推荐上车点检索失败");}
/**推荐上车点检索结果回调@param searcher 检索对象@param recommendStopResult 搜索结果@param errorCode 错误号,@see BMKSearchErrorCode*/- (void)onGetRecommendStopResult:(BMKRecommendStopSearch *)searcher result:(BMKRecommendStopSearchResult *)recommendStopResult errorCode:(BMKSearchErrorCode)errorCode {if (error == BMK_SEARCH_NO_ERROR) {//在此处理正常结果}else {NSLog(@"检索失败");}}
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。 具体使用示例可参照官方demo中的BMKRecommendStopSearchPage。BMKRecommendStopSearchResult类结构如下图:
说明:
BMKRecommendStopSearchResult | 推荐上车点检索结果类 | ||
BMKRecommendStopInfo | 推荐上车点信息类 |
使用说明
推荐上车点和全景结合使用,可以更好地向乘客展示上车点附近的环境信息,帮助乘客更快速准确地找到上车点 ,如果有需求,请在工单反馈给我们。
效果参考:
实现步骤
// 初始化BMKRecommendStopSearch实例BMKRecommendStopSearch *search = [[BMKRecommendStopSearch alloc] init];// 推荐上车点检索的代理search.delegate = self;// 初始化请求参数类BMKRecommendStopSearchOption的实例BMKRecommendStopSearchOption *stopSearchOption = [[BMKRecommendStopSearchOption alloc] init];// 推荐上车点经纬度 (必选)stopSearchOption.location = option.location;/// 推荐上车点检索BOOL flag = [search recommendStopSearch:stopSearchOption];if (flag) {NSLog(@"推荐上车点检索成功");} else {NSLog(@"推荐上车点检索失败");}
/// 推荐上车点检索结果回调/// @param searcher 搜索对象/// @param recommendStopResult 搜索结果/// @param errorCode 错误号,@see BMKSearchErrorCode- (void)onGetRecommendStopResult:(BMKRecommendStopSearch *)searcher result:(BMKRecommendStopSearchResult *)recommendStopResult errorCode:(BMKSearchErrorCode)errorCode {if (errorCode == BMK_SEARCH_NO_ERROR) {//在此发起全景缩略图请求}}
NSString *urlString = [NSString stringWithFormat:@"https://api.map.baidu.com/panorama/v2?ak=您的ak&location=%f,%f&fov=180",info.location.longitude,info.location.latitude];NSURL *listURL = [NSURL URLWithString:urlString];NSURLSession * session= [NSURLSession sharedSession];NSURLSessionDataTask * dataTask= [session dataTaskWithURL:listURL completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {dispatch_async(dispatch_get_main_queue(), ^{if ([UIImage imageWithData:data]) {//获取到全景缩略图}});}];[dataTask resume];
// key 为在百度LBS平台上统一申请的接入密钥ak 字符串self.panoramaView = [[BaiduPanoramaView alloc] initWithFrame:frame key:@"您的AK"];[self.panoramaView setAgreePrivacy:YES];// 为全景设定一个代理self.panoramaView.delegate = self;[self.view addSubview:self.panoramaView];// 设定全景的清晰度, 默认为middle[self.panoramaView setPanoramaImageLevel:ImageDefinitionMiddle];// 根据坐标转成全景使用的百度墨卡托坐标系CGPoint point = BMKConvertToBaiduMercatorFromBD09LL(_coordinate);// 设定全景的pid, 这是指定显示某地的全景,也可以通过百度坐标进行显示全景[self.panoramaView setPanoramaWithX:point.x Y:point.y];
/*** @abstract 全景图加载完毕* @param panoramaView 当前全景视图* @param jsonStr 全景单点信息**/- (void)panoramaDidLoad:(BaiduPanoramaView *)panoramaView descreption:(NSString *)jsonStr {// 不显示道路箭头[panoramaView showDirectionArrow:NO];// 关闭快速前进[panoramaView enableFastMoving:NO];// 百度墨卡托坐标CGPoint point = BMKConvertToBaiduMercatorFromBD09LL(_coordinate);// 添加全景overlay[panoramaView addImageOverlayById:@"1" X:point.x Y:point.y Z:0 image:[UIImage imageNamed:@"stop_new"]];}
(void)panoramaView:(BaiduPanoramaView *)panoramaView didReceivedMessage:(NSDictionary *)dict {// 旋转角度float heading = panoramaView.getPanoramaHeading;float mapAngle = self.mapView.getMapStatus.fRotation;if (mapAngle > 0) {heading = ((heading - mapAngle) / 180.0 * M_PI);} else {heading = (heading / 180.0 * M_PI);}[UIView animateWithDuration:0.1 animations:^{// 根据全景图旋转角度设置annotationView的角度BMKAnnotationView *annotationView = [self.mapView viewForAnnotation:self.pointAnnotation];annotationView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, heading);}];}
上一篇
下一篇
本篇文章对您是否有帮助?