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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
显示定位
下载开发文档
展示定位

定位的展示与定位的获取方式无关。展示定位功能位于“基础地图(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文档

注意:ios定位sdk返回纬度默认为国测局坐标系bmklocationcoordinatetypegcj02,ios地图sdk默认全局坐标系为百度坐标系bmklocationcoordinatetypebmk09ll
定位模式设置

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;
1.整体自定义图标
param.locationviewimagenew=[uiimage imagenamed:@"icon_car"];

运行效果:

2.整体自定义gif
param.locationviewgifimagefilepath=[nsstring stringwithformat:@"%@/6.gif",[nsbundle mainbundle].resourcepath];
param.locationviewimagesizescale=2;

运行效果:

3.箭头模式图标(注:1.剪头模式不适合普通定位方式(只展示中心自定义图片,不展示箭头),仅适用于方向、跟随、罗盘方式 2.中心图片不旋转 3.默认有向内呼吸效果)
param.islocationarrowmodecustom=yes;
param.locationviewcenterimage=[uiimageimagenamed:@"icon_car"];
param.locationviewcenterimagesizescale=1.5;
param.locationviewaroundarrowsimagescale=3;
param.locationviewaroundarrowsimage=[uiimageimagenamed:@"loc_cur_outdot"];

运行效果:

4.箭头模式gif(注:1.剪头模式不适合普通定位方式(只展示中心自定义图片,不展示箭头),仅适用于方向、跟随、罗盘方式 2.中心gif不旋转 3.默认有向内呼吸效果)
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"];

运行效果:

5.无呼吸效果(默认yes,不适合普通定位方式,仅适用于方向、跟随、罗盘方式 )
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;

运行效果:

精度圈设置

//设置显示精度圈,默认yes
param.isaccuracycircleshow=yes;
//精度圈 边框颜色
param.accuracycirclestrokecolor=[uicolor colorwithred:1green:0blue:0alpha:0.5];
//精度圈 填充颜色
param.accuracycirclefillcolor=[uicolor colorwithred:0green:1blue:0alpha:0.3];

效果如下图:

上一篇

切换地图类型

下一篇

室内地图

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

网站地图