iOS項(xiàng)目集成百度地圖方法以及問題解決

集成百度地圖

概述
百度地圖iOS SDK自v2.7.0版本起浅役,向廣大開發(fā)者提供了 .framework形式的SDK開發(fā)包蛆挫,這種形式的開發(fā)包配置簡單你稚,使用方便灸异,推薦大家使用。
配置.framework形式開發(fā)包

第一步族铆、引入BaiduMapAPI.framework
百度地圖SDK提供了模擬器和真機(jī)兩種環(huán)境所使用的framework叶堆,分別存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夾下包斑,開發(fā)者可根據(jù)需要使用真機(jī)或模擬器的包干旧,如果需同時(shí)使用真機(jī)和模擬器的包渠欺,可以使用lipo命令將設(shè)備和模擬器framwork包中的BaiduMapAPI文件合并成一個(gè)通用的文件,命令如下:lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI -output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI
此時(shí)Release-iphoneos文件夾下的BaiduMapAPI.framework即可同時(shí)用于真機(jī)和模擬器(可以使用lipo–info 命令檢查framework所支持的架構(gòu))莱革。
將所需的BaiduMapAPI.framework拷貝到工程所在文件夾下峻堰。在 TARGETS->Build Phases-> Link Binary With Libaries中點(diǎn)擊“+”按鈕,在彈出的窗口中點(diǎn)擊“Add Other”按鈕盅视,選擇BaiduMapAPI.framework文件添加到工程中捐名。
注:靜態(tài)庫中采用ObjectC++實(shí)現(xiàn),因此需要您保證您工程中至少有一個(gè).mm后綴的源文件(您可以將任意一個(gè).m后綴的文件改名為.mm)闹击,或者在工程屬性中指定編譯方式镶蹋,即將Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As設(shè)置為"Objective-C++"
第二步、引入所需的系統(tǒng)庫
百度地圖SDK中提供了定位功能和動(dòng)畫效果赏半,v2.0.0版本開始使用OpenGL渲染贺归,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework断箫、SystemConfiguration.framework拂酣、CoreGraphics.framework、Security.framework仲义。添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries婶熬,添加這幾個(gè)framework即可。
第三步埃撵、環(huán)境配置
在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC赵颅。
第四步、引入mapapi.bundle資源文件
如果使用了基礎(chǔ)地圖功能暂刘,需要添加該資源饺谬,否則地圖不能正常顯示
mapapi.bundle中存儲了定位、默認(rèn)大頭針標(biāo)注View及路線關(guān)鍵點(diǎn)的資源圖片谣拣,還存儲了矢量地圖繪制必需的資源文件募寨。如果您不需要使用內(nèi)置的圖片顯示功能,則可以刪除bundle文件中的image文件夾森缠。您也可以根據(jù)具體需求任意替換或刪除該bundle中image文件夾的圖片文件绪商。
方法:選中工程名,在右鍵菜單中選擇Add Files to “工程名”…辅鲸,從BaiduMapAPI.framework||Resources文件中選擇mapapi.bundle文件格郁,并勾選“Copy items if needed”復(fù)選框,單擊“Add”按鈕独悴,將資源文件添加到工程中例书。
第五步、引入頭文件
在使用SDK的類引入頭文件:
#import <BaiduMapAPI/BMapKit.h>//引入所有的頭文件
 
#import <BaiduMapAPI/BMKMapView.h>//只引入所需的單個(gè)頭文件

申請AK

百度API控制臺

控制臺列表

選擇創(chuàng)建應(yīng)用刻炒,應(yīng)用類型選擇iOS,應(yīng)用名稱填你需要的决采,安全碼為自己項(xiàng)目的BundleID

創(chuàng)建應(yīng)用列表

選擇提交后,就可以得到AK坟奥,然后在工程中配置树瞭,代碼如下:

#import <UIKit/UIKit.h>
#import <BaiduMapAPI/BMapKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate,BMKGeneralDelegate>

@property (strong, nonatomic) UIWindow *window;

@property (strong, nonatomic) BMKMapManager *mapManager;

@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    NSLog(@"%@",[[NSBundle mainBundle] bundleIdentifier]);
    
    // 要使用百度地圖拇厢,請先啟動(dòng)BaiduMapManager
    _mapManager = [[BMKMapManager alloc] init];
    BOOL ret = [_mapManager start:@"此處填寫申請的AK" generalDelegate:self];
    
    if (!ret) {
        NSLog(@"manager start failed!");
    }
    
    return YES;
}

在AppDelegate.m文件中實(shí)現(xiàn)BMKGeneralDelegate代理方法

- (void)onGetNetworkState:(int)iError
{
    if (0 == iError) {
        NSLog(@"聯(lián)網(wǎng)成功");
    }
    else{
        NSLog(@"onGetNetworkState %d",iError);
    }
    
}

- (void)onGetPermissionState:(int)iError
{
    if (0 == iError) {
        NSLog(@"授權(quán)成功");
    }
    else {
        NSLog(@"onGetPermissionState %d",iError);
    }
}

至此,百度地圖集成完成晒喷,參考其API實(shí)現(xiàn)相應(yīng)功能

遇到的問題

百度地圖 啟動(dòng)就報(bào) manager start failed!
之所以出現(xiàn)這樣的問題孝偎,是因?yàn)樵赬code6中 plist文件中默認(rèn)是沒有BundleDisplayName的 所以你需要找到你工程下對應(yīng)的info.plist文件 添加 BundleDispayName 并設(shè)置相應(yīng)的value就可以了

Tip

  1. 自iOS8起,系統(tǒng)定位功能進(jìn)行了升級凉敲,SDK為了實(shí)現(xiàn)最新的適配衣盾,自v2.5.0起也做了相應(yīng)的修改,開發(fā)者在使用定位功能之前爷抓,需要在info.plist里添加(以下二選一势决,兩個(gè)都添加默認(rèn)使用NSLocationWhenInUseUsageDescription):
    NSLocationWhenInUseUsageDescription ,允許在前臺使用時(shí)獲取GPS的描述
    NSLocationAlwaysUsageDescription 蓝撇,允許永久使用GPS的描述

  2. 將AppDelegate.m文件后綴改為AppDelegate.mm文件果复,否則編譯不通過


    AppDelegate.mm

記錄點(diǎn)滴,與君共勉渤昌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末据悔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耘沼,更是在濱河造成了極大的恐慌极颓,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件群嗤,死亡現(xiàn)場離奇詭異菠隆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)狂秘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門骇径,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人者春,你說我怎么就攤上這事破衔。” “怎么了钱烟?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵晰筛,是天一觀的道長。 經(jīng)常有香客問我拴袭,道長读第,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任拥刻,我火速辦了婚禮怜瞒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘般哼。我一直安慰自己吴汪,他們只是感情好惠窄,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漾橙,像睡著了一般杆融。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上近刘,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機(jī)與錄音臀晃,去河邊找鬼觉渴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛徽惋,可吹牛的內(nèi)容都是我干的案淋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼险绘,長吁一口氣:“原來是場噩夢啊……” “哼踢京!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宦棺,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤瓣距,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后代咸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹈丸,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年呐芥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逻杖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡思瘟,死狀恐怖荸百,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滨攻,我是刑警寧澤够话,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站光绕,受9級特大地震影響更鲁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奇钞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一澡为、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧景埃,春花似錦媒至、人聲如沸顶别。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驯绎。三九已至,卻和暖如春谋旦,著一層夾襖步出監(jiān)牢的瞬間剩失,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工册着, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拴孤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓甲捏,卻偏偏與公主長得像演熟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子司顿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容