Ios 百度地圖SDK簡易使用說明:http://developer.baidu.com/map/index.php?title=iossdk
先道歉:對于原來上傳的Demo我很抱歉,什么都沒有,也沒有文檔,這次我會逐步增加SDK中相關(guān)功能使用(基于百度Simple),如果我寫不好請大家多多包含;
第一步:合成靜態(tài)文件


lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a





注:目錄可能不一致
第二步:環(huán)境配置
1、在Xcode的PRoject -> Edit Active Target -> Build -> Linking -> Other Linker Flags中添加-ObjC
2、引入frameWork引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。
3、修改一個.m 文件后綴為.mm;此時測試一下看工程是否正常
4、增加pch(可有可無)


5、自iOS SDK v2.5.0起,為了對iOS8的定位能力做兼容,做了相應的修改,開發(fā)者在使用過程中注意事項如下: 需要在info.plist里添加(以下二選一,兩個都添加默認使用NSLocationWhenInUseUsageDescription):NSLocationWhenInUseUsageDescription ,允許在前臺使用時獲取GPS的描述NSLocationAlwaysUsageDescription ,允許永久使用GPS的描述。
6、在使用Xcode6進行SDK開發(fā)過程中,需要在info.plist中添加:Bundle display name ,且其值不能為空(Xcode6新建的項目沒有此配置,若沒有會造成manager start failed);
7、BMKMapView新增viewWillAppear、viewWillDisappear方法來控制BMKMapView的生命周期,并且在一個時刻只能有一個BMKMapView接受回調(diào)消息,因此在使用BMKMapView
viewController中需要在viewWillAppear、viewWillDisappear方法中調(diào)用BMKMapView的對應的方法,并處理delegate,代碼如下:
-(void)viewWillAppear:(BOOL)animated
{
[_mapViewviewWillAppear];
_mapView.delegate = self;// 此處記得不用的時候需要置nil,否則影響內(nèi)存的釋放
//啟動LocationService
[_locationServicestartUserLocationService];
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapViewviewWillDisappear];
_mapView.delegate = nil; // 不用時,置nil
}
第三步:基本使用加載
1、引用#import "BMapKit.h" ,在AppDelegate.h中聲明
@interface AppDelegate : UIResponder <UIapplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) BMKMapManager *mapManager;
@end
2、在AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
_mapManager = [[BMKMapManageralloc] init];
// BaiduMapKey 你申請的百度地圖AK(宏定義)
if (![_mapManagerstart:BaiduMapKeygeneralDelegate:self])
{
KHLog(@"啟動失敗");//KHLog 相當于NSLog
}
returnYES;
}
-(void)onGetNetworkState:(int)iError
{
if (iError == 0)
{
KHLog(@"網(wǎng)絡狀態(tài)正常");
}
else
{
KHLog(@"網(wǎng)絡錯誤:%d",iError);
}
}
-(void)onGetPermissionState:(int)iError
{
if (iError == 0)
{
KHLog(@"授權(quán)正常");
}
else
{
KHLog(@"授權(quán)錯誤:%d",iError);
}
}
- (void)applicationWillResignActive:(UIApplication *)application {
[BMKMapView willBackGround];//當應用即將后臺時調(diào)用,停止一切調(diào)用opengl相關(guān)的操作
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[BMKMapView didForeGround];//當應用恢復前臺狀態(tài)時調(diào)用,回復地圖的渲染和opengl相關(guān)的操作
}
3、在要加載mapview的controller中增加代理 BMKMapViewDelegate
聲明 BMKMapView *_mapView;
注:#define __SCREEN_SIZE [[UIScreen mainScreen] bounds].size
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, __SCREEN_SIZE.width, __SCREEN_SIZE.height)];
[self.view addSubview:_mapView];
[_mapViewsetMapType:BMKMapTypeStandard];//地圖樣式
// [_mapView setTrafficEnabled:YES];//打開實時路況圖層
// [_mapView setBaiduHeatMapEnabled:YES];//打開百度城市熱力圖圖層(百度自有數(shù)據(jù))
}
-(void)viewWillAppear:(BOOL)animated
{
[_mapViewviewWillAppear];
_mapView.delegate = self;// 此處記得不用的時候需要置nil,否則影響內(nèi)存的釋放
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapViewviewWillDisappear];
_mapView.delegate = nil; // 不用時,置nil
}
- (void)mapViewDidFinishLoading:(BMKMapView *)mapView
{
KHLog(@"地圖加載完畢加載完畢”);//這里的代理方法我就不一一展示了,具體使用情況請自己調(diào)整
}
新聞熱點
疑難解答