定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(map)”功能模块。 控制定位展示的核心代码如下:
//以下_mapview为bmkmapview对象//显示定位图层_mapview.showsuserlocation=yes;
效果图如下:
ios地图sdk 4.2.0版本后不再提供location定位组件,百度地图开放平台在系统定位基础之上,为广大开发者全新提供了ios端独立的定位sdk产品, 欢迎广大开发者的使用。 在定位sdk的定位结果回调方法中,调用地图sdk的相应方法,更新地图上展示的定位图标的位置和朝向等显示效果,具体核心代码如下:(完整代码请参考demo中的bmklocationmodepage)
@property(nonatomic, strong)bmkuserlocation*userlocation;//当前位置对象//由于以下代理方法中分别且仅只返回heading或location信息,请开发者务必将该对象定义为全局类型,避免在以下回调用使用局部的bmkuserlocation对象,导致出现定位显示错误位置的情况。// 定位sdk中,方向变更的回调-(void)bmklocationmanager:(bmklocationmanager*)manager didupdateheading:(clheading*)heading {if(!heading){return;}if(!self.userlocation){self.userlocation=[[bmkuserlocation alloc] init];}self.userlocation.heading= heading;[self.mapview updatelocationdata:self.userlocation];}// 定位sdk中,位置变更的回调-(void)bmklocationmanager:(bmklocationmanager*)manager didupdatelocation:(bmklocation*)location orerror:(nserror*)error {if(error){nslog(@"locerror:{%ld - %@};",(long)error.code, error.localizeddescription);}if(!location){return;}if(!self.userlocation){self.userlocation=[[bmkuserlocation alloc] init];}self.userlocation.location=location.location;[self.mapview updatelocationdata:self.userlocation];}
其他定位相关的开发指南,请参考ios定位sdk文档。
bmkmapview的定位模式(usertrackingmode)有4种。
普通定位模式
显示我的位置,我的位置图标和地图都不会旋转
_mapview.usertrackingmode=bmkusertrackingmodenone;
效果如下图:
定位方向模式
显示我的位置,我的位置图标会旋转,地图不会旋转
_mapview.usertrackingmode=bmkusertrackingmodeheading;
效果如下图:
定位跟随模式
我的位置始终在地图中心,我的位置图标会旋转,地图不会旋转
_mapview.usertrackingmode=bmkusertrackingmodefollow;
效果如下图:
定位罗盘模式
我的位置始终在地图中心,我的位置图标和地图都会跟着旋转
_mapview.usertrackingmode=bmkusertrackingmodefollowwithheading;
效果如下图:
bmklocationviewdisplayparam类提供了定位图层的配置项,可以通过bmkmapview的updatelocationviewwithparam方法自定义定位图层,代码示例如下:
// self.mapview是bmkmapview对象bmklocationviewdisplayparam*param =[[bmklocationviewdisplayparam alloc] init];//根据配置参数更新定位图层样式[self.mapview updatelocationviewwithparam:param];
定位图标设置
//定位图标名称,需要将该图片放到 mapapi.bundle/images 目录下param.locationviewimgname= @"icon_nav_bus";//用户自定义定位图标,v4.2.1以后支持param.locationviewimage=[uiimage imagenamed:@"location.png"];
效果图如下:
since 6.5.7 ios地图sdk新增整体自定义和箭头模式自定义,支持gif动画。
新增接口:
旧接口:只支持全局整体设置图标/// 用户自定义定位图标,v4.2.1以后支持@property(nonatomic, strong)uiimage*locationviewimage;新增接口:///是否是定位图标箭头模式自定义,yes:箭头模式自定义, no:整体自定义,默认no@property(nonatomic, assign)bool islocationarrowmodecustom;/* 以下为定位图标整体自定义,自定义图片和gif图二选一,gif图优先级大于图片*////新版用户自定义定位图标,since 6.5.7@property(nonatomic, strong)uiimage*locationviewimagenew;///定位图标整体自定义gif图文件路径,since 6.5.7@property(nonatomic, copy)nsstring*locationviewgifimagefilepath;///定位图标整体自定义大小缩放系数,默认为1,可设置范围0.5~2.0,基于固定尺寸cgsizemake(30, 30)缩放,since 6.5.7@property(nonatomic, assign)cgfloat locationviewimagesizescale;/// 定位图标整体样式自定义呼吸效果,默认为no,since 6.5.7@property(nonatomic, assign)bool breatheeffectopenforwholestyle;/* 以下为箭头模式定位图标自定义,可分别自定义中心圆点图片和箭头图片,中心图标自定义图片和gif图二选一,gif图优先级大于图片*////箭头模式定位图标中心图片,无方向,since 6.5.7@property(nonatomic, strong)uiimage*locationviewcenterimage;///箭头模式定位图标中心圆点gif图文件路径,无方向,since 6.5.7@property(nonatomic, copy)nsstring*locationviewcentergifimagefilepath;///箭头模式定位图标中心圆点图片大小缩放系数,默认为1,可设置范围0.5~2.0,基于固定尺寸cgsizemake(30, 30)缩放,since 6.5.7@property(nonatomic, assign)cgfloat locationviewcenterimagesizescale;///箭头模式定位图标周边箭头轮廓图片,箭头向上为正,since 6.5.7@property(nonatomic, strong)uiimage*locationviewaroundarrowsimage;///箭头模式定位图标周边箭头轮廓图片大小缩放系数,默认为1,可设置范围0.2~3.0,基于图片大小缩放,since 6.5.7@property(nonatomic, assign)cgfloat locationviewaroundarrowsimagesizescale;/// 箭头样式定位图标呼吸效果,默认为yes,since 6.5.7@property(nonatomic, assign)bool breatheeffectopenforarrowsstyle;
param.locationviewimagenew=[uiimage imagenamed:@"icon_car"];
运行效果:
param.locationviewgifimagefilepath=[nsstring stringwithformat:@"%@/6.gif",[nsbundle mainbundle].resourcepath];param.locationviewimagesizescale=2;
运行效果:
param.islocationarrowmodecustom=yes;param.locationviewcenterimage=[uiimageimagenamed:@"icon_car"];param.locationviewcenterimagesizescale=1.5;param.locationviewaroundarrowsimagescale=3;param.locationviewaroundarrowsimage=[uiimageimagenamed:@"loc_cur_outdot"];
运行效果:
param.islocationarrowmodecustom=yes;param.locationviewcentergifimagefilepath=[nsstring stringwithformat:@"%@/6.gif",[nsbundle mainbundle].resourcepath];param.locationviewcenterimagesizescale=1.5;param.locationviewaroundarrowsimagescale=3;param.locationviewaroundarrowsimage=[uiimageimagenamed:@"loc_cur_outdot"];
运行效果:
param.islocationarrowmodecustom=yes;param.locationviewcentergifimagefilepath=[nsstring stringwithformat:@"%@/6.gif",[nsbundle mainbundle].resourcepath];param.locationviewcenterimagesizescale=1.5;param.locationviewaroundarrowsimagescale=3;param.locationviewaroundarrowsimage=[uiimageimagenamed:@"loc_cur_outdot"];param.breatheeffectopenforarrowsstyle=no;
运行效果:
精度圈设置
//设置显示精度圈,默认yesparam.isaccuracycircleshow=yes;//精度圈 边框颜色param.accuracycirclestrokecolor=[uicolor colorwithred:1green:0blue:0alpha:0.5];//精度圈 填充颜色param.accuracycirclefillcolor=[uicolor colorwithred:0green:1blue:0alpha:0.3];
效果如下图:
上一篇
下一篇
本篇文章对您是否有帮助?