百度地图集成_定位功能


定位前的准备工作:

1.infor.plist中加入以下2个参数:

1.加入Bundle display name,其参数不能为空

2.自iOS8起,系统定位功能进行了升级,SDK为了实现最新的适配,自v2.5.0起也做了相应的修改,开发者在使用定位功能之前,需要在info.plist里添加(以下二选一,两个都添加默认使用NSLocationWhenInUseUsageDescription):

NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述

NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述



2.重点在于BMKLocationService 的这个类进行定位,定位方面主要分以下3块:

1.关于定位方式的问题:

定位开启:[self.locService startUserLocationService];

定位关闭:[self.locService stopUserLocationService];

定位方式改变如下:

// 设置定位图层特点(每次修改图层属性,都要先关闭,再设置,最后再打开)

self.mapView.showsUserLocation =NO;

self.mapView.userTrackingMode =BMKUserTrackingModeFollow;//定位跟随模式

self.mapView.showsUserLocation =YES;

其中:userTrackingMode参数有以下4个取值:

typedef enum {

BMKUserTrackingModeNone = 0,            /// 普通定位模式

BMKUserTrackingModeHeading,              /// 定位方向模式

BMKUserTrackingModeFollow,              /// 定位跟随模式

BMKUserTrackingModeFollowWithHeading,    /// 定位罗盘模式

} BMKUserTrackingMode;



2.关于定位的代理方法总结

以下为BMKLocationServiceDelegate的方法,详细解释见前面的注释,具体使用见Demo

/**

*在地图View将要启动定位时,会调用此函数

*@param mapView 地图View

*/

- (void)willStartLocatingUser

{

NSLog(@"start locate");

}

/**

*用户方向更新后,会调用此函数

*@param userLocation 新的用户位置

*/

- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation

{

[self.mapView updateLocationData:userLocation];

NSLog(@"heading is %@",userLocation.heading);

}

/**

*用户位置更新后,会调用此函数

*@param userLocation 新的用户位置

*/

- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{

//    NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

[self.mapView updateLocationData:userLocation];

}

/**

*在地图View停止定位后,会调用此函数

*@param mapView 地图View

*/

- (void)didStopLocatingUser

{

NSLog(@"stop locate");

}

/**

*定位失败后,会调用此函数

*@param mapView 地图View

*@param error 错误号,参考CLError.h中定义的错误号

*/

- (void)didFailToLocateUserWithError:(NSError *)error

{

NSLog(@"location error");

}

需要注意的是:其中的didUpdateUserHeading 和didUpdateBMKUserLocation 调用频率比较高,不用定位功能时,要及时关闭,可以省电。



3.关于定位图层的属性更改

主要为下面这个类:BMKLocationViewDisplayParam

其中的属性为以下如:

self.locViewParam.accuracyCircleFillColor =[UIColor redColor];  /////精度圈 填充颜色

self.locViewParam.locationViewOffsetX =100;//具体定位位置处在屏幕的X值

self.locViewParam.locationViewOffsetY =200;///具体定位位置处在屏幕的Y值

下一篇:3.百度地图POi搜索与正反地理编码

参考Demo为:本人项目地址:

你可能感兴趣的:(百度地图集成_定位功能)