简介
推荐上⻋点功能是基于用户定位的周边范围内的道路信息、步行距离、方向等信息实现的,该数据依托百度位置大数据的沉淀积累,推送合理上⻋点,降低接驾时间。
使用说明
推荐上⻋点功能对普通开发者仅提供试用配额。 配额提升针对合作用户。如果有配额需求,请在工单反馈给我们。
实现步骤
推荐上车点检索功能使用的是地图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 =[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];
// 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];
/*** @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"]];}
(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);}];}
上一篇
下一篇
本篇文章对您是否有帮助?