百度地圖整合_定位功能

weixin_34320159發表於2016-11-09


定位前的準備工作:

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為:本人專案地址:

相關文章