浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
更新时间:2022-11-01

推荐上⻋点功能是基于用户定位的周边范围内的道路信息、步行距离、方向等信息实现的,该数据依托百度位置大数据的沉淀积累,推送合理上⻋点,降低接驾时间。

使用说明

推荐上⻋点功能对普通开发者仅提供试用配额。 配额提升针对合作用户。如果有配额需求,请在工单反馈给我们。

实现步骤
1引入头文件

推荐上车点检索功能使用的是地图SDK的检索功能,需要在工程中导入检索功能包

Objective-C
Swift
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
// 在桥接头文件BMKSwiftDemo-Bridging-Header中添加
#import <BaiduMapAPI_Base/BMKBaseComponent.h>
#import <BaiduMapAPI_Search/BMKSearchComponent.h>
2初始化推荐上车点检索对象
Objective-C
Swift
BMKRecommendStopSearch *search = [[BMKRecommendStopSearch alloc] init];
let recommendStopSearch = BMKRecommendStopSearch()
3设置推荐上车点检索服务代理
Objective-C
Swift
recommendStopSearch.delegate = self;
recommendStopSearch.delegate = self;
4构造推荐上车点检索参数
Objective-C
Swift
BMKRecommendStopSearchOption *stopSearchOption = [[BMKRecommendStopSearchOption alloc] init];  
// 推荐上车点经纬度 (必选)
stopSearchOption.location = CLLocationCoordinate2DMake(40.047471, 116.31372);
let recommendStopOption = BMKRecommendStopSearchOption()
// 推荐上车点的经纬度坐标(必选)
recommendStopOption.location = CLLocationCoordinate2DMake(40.047471, 116.31372)
5发起推荐上车点检索请求
Objective-C
Swift
BOOL flag = [search recommendStopSearch:stopSearchOption];  
if (flag) {  
    NSLog(@"推荐上车点检索成功");  
}  else  {  
    NSLog(@"推荐上车点检索失败");  
}  
let flag = recommendStopSearch.recommendStopSearch(recommendStopOption);
 if flag {
     NSLog("推荐上车点检索成功")
 } else {
     NSLog("推荐上车点检索失败")
 }
6实现代理方法,获取检索结果
Objective-C
Swift
/**
 推荐上车点检索结果回调
 
 @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(@"检索失败");  
    }  
}
   func onGetRecommendStopResult('''_''' searcher: BMKRecommendStopSearch, result recommendStopResult: BMKRecommendStopSearchResult, errorCode: BMKSearchErrorCode) {
    if error == BMK_SEARCH_NO_ERROR {  
        //在此处理正常结果  
    }  
    else {  
        print("检索失败");  
    }  
}
7处理检索返回的结果
通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。 具体使用示例可参照官方demo中的BMKRecommendStopSearchPage。BMKRecommendStopSearchResult类结构如下图:
pickuppoint.png


说明:
BMKRecommendStopSearchResult  推荐上车点检索结果类

BMKRecommendStopInfo          推荐上车点信息类

推荐上车点和全景结合使用

使用说明

推荐上车点和全景结合使用,可以更好地向乘客展示上车点附近的环境信息,帮助乘客更快速准确地找到上车点 ,如果有需求,请在工单反馈给我们。

效果参考:

  • https://mapopen-pub-iossdk.bj.bcebos.com/map/img/panorama.mp4
实现步骤
1根据起点发起推荐上车点检索
// 初始化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(@"推荐上车点检索失败");
}
2监听检索结果回调
/// 推荐上车点检索结果回调
/// @param searcher 搜索对象
/// @param recommendStopResult  搜索结果
/// @param errorCode  错误号,@see BMKSearchErrorCode
- (void)onGetRecommendStopResult:(BMKRecommendStopSearch *)searcher result:(BMKRecommendStopSearchResult *)recommendStopResult errorCode:(BMKSearchErrorCode)errorCode {
if (errorCode == BMK_SEARCH_NO_ERROR) {
  //在此发起全景缩略图请求
}
}
3发起全景缩略图请求,参考全景静态图
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];
4展示全景图
// 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];
5全景图上展示推荐上车点
/**
* @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"]];
}
6推荐上车点对应地图某个点的角度
(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);
}];
}
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消