本篇分4步講述如何在項目中集成百度地圖: 秘鑰是在 http://lbsyun.baidu.com/apiconsole/key 百度開放平臺申請。 在使用SDK的類時按需引入下邊的頭文件 到此步,我們就可以正常運行百度地圖了。 但是,需要註意的是在控制臺上會輸出以下信息: 那麼我們按照要求一步步來
本篇分4步講述如何在項目中集成百度地圖:
第一步:創建項目
第二步:利用 cocoaPod 導入百度地圖的 SDK(pod 'BaiduMapKit' #百度地圖SDK)
第三步:在 pch 文件中導入頭文件和秘鑰
秘鑰是在 http://lbsyun.baidu.com/apiconsole/key 百度開放平臺申請。
#define APPKEY @"UzyiXewPsqPhcE1yS8wxqik9"
在使用SDK的類時按需引入下邊的頭文件
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相關所有的頭文件 #import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地圖功能所有的頭文件 #import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入檢索功能所有的頭文件 #import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入雲檢索功能所有的頭文件 #import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的頭文件 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入計算工具所有的頭文件 #import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周邊雷達功能所有的頭文件 #import < BaiduMapAPI_Map/BMKMapView.h>//只引入所需的單個頭文件
第四步:在AppDelegate.m文件中載入地圖管理者
- (BMKMapManager *)mapManager { if (!_mapManager) { _mapManager = [[BMKMapManager alloc] init]; BOOL ret = [_mapManager start:APPKEY generalDelegate:nil]; if (!ret) { NSLog(@"manager start failed!"); } else { NSLog(@"manager start success!"); } } return _mapManager; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self mapManager]; return YES; }
到此步,我們就可以正常運行百度地圖了。
但是,需要註意的是在控制臺上會輸出以下信息:
那麼我們按照要求一步步來就是了,首先在 plist 文件中配置 Bundle display name,其實這是在Xcode6中需要配置的信息,Xcode7中並沒有要求
<key>CFBundleDisplayName</key> <string>$(PRODUCT_NAME)</string>
再次運行,地圖管理者便載入成功了,但是由於iOS9改用更安全的https,為了能夠在iOS9中正常使用百度地圖SDK,此時還需註入 ATS
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
此時雖然不會報錯,管理者同樣載入成功了,地圖的網格也有了,但是地圖詳細信息貌似不能顯示出來了。
這時檢查一下你的 key 是否正確,我是犯過一次,一定以保證申請 key 是的安全碼與項目的Bundle Identifier保持一致。
這時百度地圖便算是成功集成了。
註意:本篇文章中為說明的地方均未進行配置。
app在前後臺切換時,需要使用下麵的代碼停止地圖的渲染和openGL的繪製:
- (void)applicationWillResignActive:(UIApplication *)application { [BMKMapView willBackGround];//當應用即將後臺時調用,停止一切調用opengl相關的操作 } - (void)applicationDidBecomeActive:(UIApplication *)application { [BMKMapView didForeGround];//當應用恢復前臺狀態時調用,回覆地圖的渲染和opengl相關的操作 }