ios地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
推荐上车点
下载开发文档
推荐上车点

简介

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

使用说明

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

实现步骤

1. 引入头文件

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

#import<baidumapapi_base/bmkbasecomponent.h>
#import<baidumapapi_search/bmksearchcomponent.h>
2. 初始化推荐上车点检索对象
bmkrecommendstopsearch*search =[[bmkrecommendstopsearch alloc] init];
3. 设置推荐上车点检索服务代理
recommendstopsearch.delegate= self;
4. 构造推荐上车点检索参数
bmkrecommendstopsearchoption*stopsearchoption =[[bmkrecommendstopsearchoption alloc] init];
// 推荐上车点经纬度 (必选)
stopsearchoption.location=cllocationcoordinate2dmake(40.047471,116.31372);
5. 发起推荐上车点检索请求
bool flag =[search recommendstopsearch:stopsearchoption];
if(flag){
nslog(@"推荐上车点检索成功");
}else{
nslog(@"推荐上车点检索失败");
}
6. 实现代理方法,获取检索结果
/**
推荐上车点检索结果回调
@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(@"检索失败");
}
}
7. 处理检索返回的结果

通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。具体使用示例可参照官方demo中的通过代理返回的error判断检索是否成功,如果检索成功,可通过解析result字段获取具体的结果。 具体使用示例可参照官方demo中的bmkrecommendstopsearchpage。bmkrecommendstopsearchresult类结构如下图:

说明:

bmkrecommendstopsearchresult推荐上车点检索结果类
bmkrecommendstopinfo推荐上车点信息类
与全景结合使用

使用说明

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

效果参考:

实现步骤

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 =[nsurlurlwithstring: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.xy: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.xy:point.yz:0image:[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.1animations:^{
// 根据全景图旋转角度设置annotationview的角度
bmkannotationview*annotationview =[self.mapview viewforannotation:self.pointannotation];
annotationview.transform=cgaffinetransformrotate(cgaffinetransformidentity, heading);
}];
}

上一篇

天气服务

下一篇

地址编码

本篇文章对您是否有帮助?

网站地图