各位小伙伴們大家好,今天我向大家介紹一下蘋果百度地圖的使用方法,因?yàn)樽鲞^一些想關(guān)的APP,感覺百度地圖還是挺方便的。
首先我們先創(chuàng)建一個(gè)工程,創(chuàng)建好了之后,我們繼續(xù)來看一下百度地圖的開放平臺(tái)

點(diǎn)擊上面?zhèn)€的開發(fā),然后選擇下面的ios地圖SDK,進(jìn)去之后我們會(huì)看到百度地圖的概述:
地圖
(地圖都是一些簡單的功能,只能進(jìn)行一些查看的簡單操作)
提供地圖展示和地圖操作功能
· 地圖展示包括:普通地圖(2D,3D)、衛(wèi)星圖和實(shí)時(shí)交通圖;
· 地圖操作:可通過接口或手勢(shì)控制來實(shí)現(xiàn)地圖的點(diǎn)擊、雙擊、長按、縮放、旋轉(zhuǎn)、改變視角等操作。

POI檢索
(POI檢索主要是對(duì)周邊或者某個(gè)城市,還有一些商家商店,景點(diǎn)地址等搜索)
支持周邊檢索、區(qū)域檢索、城市內(nèi)檢索和Place詳情信息檢索。
·周邊檢索:以某一點(diǎn)為中心,指定距離為半徑,根據(jù)用戶輸入的關(guān)鍵詞進(jìn)行POI檢索;
·區(qū)域檢索:在指定的矩形區(qū)域內(nèi)、根據(jù)關(guān)鍵詞進(jìn)行POI檢索;
·城市內(nèi)檢索:在某一城市內(nèi),根據(jù)用戶輸入的關(guān)鍵字進(jìn)行POI檢索;
·Place詳情檢索:根據(jù)POI的ID信息,檢索指定POI點(diǎn)的Place詳情數(shù)據(jù)。

地理編碼
(地理編碼的功能就是根據(jù)已個(gè)地址名得到它的坐標(biāo),或者根據(jù)坐標(biāo)得到地址的名稱,比如我們定位之后,會(huì)獲取到我們位置的坐標(biāo),然后根據(jù)坐標(biāo)得到我們位置的一些信息,或者來獲取周邊的一些信息等)
提供地理坐標(biāo)和地址之間相互轉(zhuǎn)換的能力。
·正向地理編碼:實(shí)現(xiàn)了將中文地址或地名描述轉(zhuǎn)換為地球表面上相應(yīng)位置的功能;
·反向地理編碼:將地球表面的地址坐標(biāo)轉(zhuǎn)換為標(biāo)準(zhǔn)地址的過程。

線路規(guī)劃
(線路規(guī)劃就是當(dāng)我們需要去某個(gè)地方,我們進(jìn)行搜索之后就會(huì)在地圖上顯示出一條路線來指示我們)

支持公交信息查詢、公交換乘查詢、駕車線路規(guī)劃和步行路徑檢索。
·公交信息查詢:可對(duì)公交詳細(xì)信息進(jìn)行查詢;
·公交換乘查詢:根據(jù)起、終點(diǎn),查詢策略,進(jìn)行線路規(guī)劃方案;
·駕車線路規(guī)劃:提供不同策略,規(guī)劃駕車路線;(支持設(shè)置途經(jīng)點(diǎn))
·步行路徑檢索:支持步行路徑的規(guī)劃。

調(diào)啟百度地圖
(調(diào)起百度地圖,就是在我們自己的App里直接跳到百度地圖的App,如果我們安裝了百度地圖就會(huì)開啟百度地圖App,如果我們沒安裝百度地圖App那么它就會(huì)在瀏覽器里打開百度地圖)
利用SDK接口,直接在本地打開百度地圖客戶端或WebApp,實(shí)現(xiàn)地圖功能。 目前支持調(diào)啟的功能有:POI周邊檢索、POI詳情頁面、步行線路規(guī)劃、駕車線路規(guī)劃、公交線路規(guī)劃、駕車導(dǎo)航。(具體請(qǐng)參考開發(fā)指南中,計(jì)算工具章節(jié)內(nèi)的介紹)

定位
采用iOS系統(tǒng)定位,使用地圖SDK中我的位置圖層進(jìn)行豐富的位置展示(包括普通態(tài)、跟隨態(tài)和羅盤態(tài))。

上面都是是我們開發(fā)中常用到的一些功能,下面的的功能用的不是特別多
覆蓋物圖層
支持多種覆蓋物圖層,便于顯示POI檢索結(jié)果、線路規(guī)劃結(jié)果、自定義標(biāo)繪等。 此外還提供特有的圖片圖層,用于顯示用戶傳入的圖片信息。開放熱力圖繪制能力,通過用戶自有數(shù)據(jù),繪制屬于自己的熱力圖。 瓦片圖層,支持開發(fā)者添加自有瓦片數(shù)據(jù)
離線地圖
用戶可以通過SDK在線下載離線包接口,下載離線地圖包,使用離線地圖可節(jié)省用戶流量,提供更好的地圖展示效果
周邊雷達(dá)
周邊雷達(dá)功能,是面向移動(dòng)端開發(fā)者的一套SDK功能接口。同步支持Android和iOS端。它的本質(zhì)是一個(gè)連接百度LBS開放平臺(tái)前端SDK產(chǎn)品和后端LBS云的中間服務(wù)。開發(fā)者利用周邊雷達(dá)功能,可以便捷的在自己的應(yīng)用內(nèi),幫助用戶實(shí)現(xiàn)查找周邊跟“我”使同樣一款A(yù)pp的人,這樣一個(gè)功能。
LBS云
百度地圖LBS云是百度地圖針對(duì)LBS開發(fā)者全新推出的平臺(tái)級(jí)服務(wù),不僅適用PC應(yīng)用開發(fā),同時(shí)適用移動(dòng)設(shè)備應(yīng)用的開發(fā)。 使用LBS云,可以實(shí)現(xiàn)移動(dòng)開發(fā)者存儲(chǔ)海量位置數(shù)據(jù)的服務(wù)器零成本及維護(hù)壓力,且支持高效檢索用戶數(shù)據(jù),且實(shí)現(xiàn)地圖展現(xiàn)。
特色功能
特色功能包括:短串分享、Place詳情檢索等。
·短串分享:將POI搜索結(jié)果或反地理編碼結(jié)果生成短串,當(dāng)其他用戶點(diǎn)擊短串即可打開手機(jī)上的百度地圖客戶端或者手機(jī)瀏覽器進(jìn)行查看。
·熱力圖繪制:根據(jù)用戶自有數(shù)據(jù),提供相應(yīng)繪制接口,實(shí)現(xiàn)熱力圖本地繪制;
·Place詳情檢索:根據(jù)POI的ID信息,檢索指定POI點(diǎn)的Place詳情數(shù)據(jù)。
個(gè)性化地圖
自v2.10.0起,支持使用個(gè)性化地圖模板,改變底圖顏色和樣式。
·使用個(gè)性化模板,實(shí)現(xiàn)地圖元素的顏色設(shè)置,地圖元素包含大地、水系、草地、高速、普通道路、鐵路、地鐵,poi等,以及poi和道路的文字顏色設(shè)置。
·通過可見屬性,控制顯示地圖元素。
室內(nèi)圖
自v3.0版起,百度地圖SDK室內(nèi)圖功能正式上線,輔助開發(fā)者實(shí)現(xiàn)全新的地理位置服務(wù)體驗(yàn),室內(nèi)地圖與百度地圖App同步更新。
·支持的公眾建筑包含購物商場(chǎng)、機(jī)場(chǎng)和火車站等交通樞紐,醫(yī)院等,覆蓋全國約600個(gè)大型購物中心,覆蓋類型和城市還在持續(xù)增加中。
這些都是一些常用的基本功能,下面我們繼續(xù)看開發(fā)的過程:
首先我們先獲取秘鑰,獲取秘鑰我們就必須要登錄百度賬號(hào),我們可以用QQ、微博、微信或者直接注冊(cè)一個(gè)賬號(hào),登錄之后呢直接點(diǎn)擊獲取秘鑰,然后我們會(huì)看到,如圖:

需要我們注冊(cè)開發(fā)者,我們?cè)谶@填寫上姓名,手機(jī)號(hào)郵箱之后,就可以了,因?yàn)槲矣幸粋€(gè)我就直接用我現(xiàn)在的了,直接登錄進(jìn)入到申請(qǐng)密鑰的界面,可以看到我這里面
百度地圖iOS SDK開發(fā)密鑰的申請(qǐng)地址為:http://lbsyun.baidu.com/apiconsole/key

創(chuàng)建了有很多應(yīng)用,然后我們點(diǎn)擊左邊上面的創(chuàng)建應(yīng)用,創(chuàng)建一個(gè)新的應(yīng)用方便我們演示;
我們先起個(gè)名字,百度地圖Demo,然后點(diǎn)擊下面的應(yīng)用類型,選擇ios SDK,然后繼續(xù)選擇下面的啟用服務(wù),一般用不到的我們會(huì)勾選掉,然后繼續(xù)下面填寫安全碼,說一下可能第一次用百度地圖的小伙伴不知道這個(gè)安全碼在哪找,其實(shí)這個(gè)安全碼是在我們創(chuàng)建的項(xiàng)目工程里的Bundle identifier,如圖:

根據(jù)順序選則,上面選中的就是我們的安全碼,直接拷貝到我們的創(chuàng)建百度應(yīng)用里面,最后直接提交,就可以了。

創(chuàng)建完應(yīng)用之后我們會(huì)獲取到一個(gè)訪問應(yīng)用的APK
如圖:

這就是我們代碼里所需要的,一會(huì)我們會(huì)把他粘貼到我們的工程項(xiàng)目里;
下面我們繼續(xù)看,首先我們來先看一下簡介:
主要介紹了什么是百度地圖ios SDK,基本功能我們上面已經(jīng)說過了,還有適用的對(duì)象,以及獲取定制的的SDK和兼容性
什么是百度地圖iOS SDK?
百度地圖iOS SDK是一套基于armv7、armv7s、arm64(自v2.5.0版本)處理器設(shè)備的應(yīng)用程序接口,不僅提供構(gòu)建地圖的基本接口,還提供POI搜索、地理編碼、路線規(guī)劃、定位、本地覆蓋物繪制、周邊雷達(dá)等服務(wù),自v2.0.0開始為矢量渲染的3D地圖,并新增了矢量離線地圖下載功能接口。
自v2.7.0版本開始,iOS 地圖SDK向廣大開發(fā)者提供了 .framework形式的開發(fā)包,此種形式配置簡單、使用方便,請(qǐng)廣大開發(fā)者使用。自2.9.0版本起,iOS 地圖SDK不再提供 .a形式的開發(fā)包!
您可以使用百度地圖iOS SDK開發(fā)適用于移動(dòng)設(shè)備的地圖應(yīng)用,通過接口,您可以輕松訪問百度服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖應(yīng)用程序。百度地圖iOS SDK提供的功能如下:
地圖:提供地圖展示和地圖操作功能;
室內(nèi)圖:提供展示公眾建筑物室內(nèi)地圖的展示功能;
POI檢索:支持周邊檢索、區(qū)域檢索和城市內(nèi)興趣點(diǎn)檢索;
室內(nèi)POI檢索:支持設(shè)置城市和當(dāng)前建筑物的室內(nèi)POI檢索;
地理編碼:提供經(jīng)緯度和地址信息相互轉(zhuǎn)化的功能接口;
線路規(guī)劃:支持公交、駕車、步行、騎行,四種方式的線路規(guī)劃;
覆蓋物圖層:支持在地圖上添加覆蓋物(標(biāo)注、幾何圖形、熱力圖、地形圖圖層等),展示更豐富的LBS信息;
定位:獲取當(dāng)前位置信息,并在地圖上展示(支持普通、跟隨、羅盤三種模式);
離線地圖:使用離線地圖可節(jié)省用戶流量,提供更好的地圖展示效果;
調(diào)啟百度地圖:利用SDK接口,直接在本地打開百度地圖客戶端或WebApp,實(shí)現(xiàn)地圖功能;
周邊雷達(dá):利用周邊雷達(dá)功能,開發(fā)者可在App內(nèi)低成本、快速實(shí)現(xiàn)查找周邊使用相同App的用戶位置的功能;
LBS云檢索:支持查詢存儲(chǔ)在LBS云內(nèi)的自有數(shù)據(jù);
瓦片圖層: 支持在地圖上添加自有瓦片數(shù)據(jù)。
特色功能:提供短串分享、Place詳情檢索、熱力圖等特色功能,幫助開發(fā)者搭建功能更加強(qiáng)大的應(yīng)用;
獲取定制的SDK
開發(fā)者可在百度地圖iOS SDK的下載頁面下載到最新版的地圖SDK,下載地址為:http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download
為了給開發(fā)者帶來更優(yōu)質(zhì)的地圖服務(wù)、滿足開發(fā)者靈活使用SDK的需求,百度地圖SDK自v2.3.0起,采用了可定制的形式為用戶提供開發(fā)包。百度地圖SDK按功能可分為:基礎(chǔ)地圖、檢索功能、LBS云檢索、定位功能、計(jì)算工具、周邊雷達(dá)六個(gè)部分,開發(fā)者可根據(jù)自身的實(shí)際需求,任意組合這六種功能,點(diǎn)擊下載頁面的“自定義下載”,即可下載相應(yīng)的開發(fā)包來完成自己的應(yīng)用開發(fā)。
基礎(chǔ)地圖:包括基本矢量地圖、衛(wèi)星圖、實(shí)時(shí)路況圖和各種地圖覆蓋物(POI搜索結(jié)果圖層、路線圖層、自定義圖層、幾何圖形繪制圖層、地形圖圖層、熱力圖、瓦片圖層等),此外還包括各種與地圖相關(guān)的操作和事件監(jiān)聽;
檢索功能:包括POI檢索(周邊、區(qū)域、城市內(nèi)),Place詳情檢索,行政區(qū)域檢索,公交信息查詢,路線規(guī)劃(駕車、步行、公交、騎行),地理編碼/反地理編碼,在線建議查詢,短串分享等;
LBS云檢索:包括LBS云檢索(周邊、區(qū)域、城市內(nèi)、詳情);
定位功能:獲取當(dāng)前位置信息;
計(jì)算工具:包括計(jì)算兩點(diǎn)之間距離、計(jì)算矩形面積、坐標(biāo)轉(zhuǎn)換、調(diào)啟百度地圖客戶端、判斷點(diǎn)和圓/多邊形位置關(guān)系、本地收藏夾等功能;
周邊雷達(dá):包含位置信息上傳和檢索周邊相同應(yīng)用的用戶位置信息功能;
注:本套開發(fā)指南是針對(duì)默認(rèn)的全功能包編寫,開發(fā)者在使用定制化的SDK進(jìn)行開發(fā)時(shí),請(qǐng)參考開發(fā)指南中相對(duì)應(yīng)的章節(jié)或從相應(yīng)開發(fā)包中的readme文檔獲取更多信息。
兼容性
百度地圖iOS SDK支持iOS 5.0及以上操作系統(tǒng),支持armv7、armv7s、arm64(自v2.5.0版本)處理器。
注意事項(xiàng)與配置開發(fā)環(huán)境
下面再來說一下關(guān)鍵的部分,注意事項(xiàng)跟開發(fā)環(huán)境的配置,我在第一次開發(fā)這個(gè)百度地圖的時(shí)候出現(xiàn)了一些問題,大部分都是因?yàn)樽⒁馐马?xiàng)這里有的沒有改,從而導(dǎo)致了項(xiàng)目沒有跑起來。
注意事項(xiàng)
1、靜態(tài)庫中采用ObjectC++實(shí)現(xiàn),因此需要您保證您工程中至少有一個(gè).mm后綴的源文件(您可以將任意一個(gè).m后綴的文件改名為.mm),或者在工程屬性中指定編譯方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 Compile Sources As,并將其設(shè)置為"Objective-C++"
2、如果您只在Xib文件中使用了BMKMapView,沒有在代碼中使用BMKMapView,編譯器在鏈接時(shí)不會(huì)鏈接對(duì)應(yīng)符號(hào),需要在工程屬性中顯式設(shè)定:在Xcode的Project -> Edit Active Target -> Build Setting -> Other Linker Flags中添加-ObjC
3、授權(quán)Key的申請(qǐng):新、舊Key之間不可通用,即新Key只可以使用在v2.0.2及后續(xù)版本的SDK中,舊的Key只適用于v2.0.1及之前版本的SDK;如果還沒有授權(quán)Key,請(qǐng) 申請(qǐng)密鑰
4、由于iOS9改用更安全的https,為了能夠在iOS9中正常使用地圖SDK,請(qǐng)?jiān)?Info.plist"中進(jìn)行如下配置,否則影響SDK的使用。NSAppTransportSecurityNSAllowsArbitraryLoads
如圖

5、如果在iOS9中使用了調(diào)起百度地圖客戶端功能,必須在"Info.plist"中進(jìn)行如下配置,否則不能調(diào)起百度地圖客戶端。
<key>LSApplicationQueriesSchemesbaidumap</key>
? ? ? ? <array>
? ? ? ? ?<string> baidumap</string>
? ? ? ? </array>
如圖(我這里是添加了兩個(gè)方便大家看,大家可以根據(jù)需要來添加)

6、管理地圖的生命周期:自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法來控制BMKMapView的生命周期,并且在一個(gè)時(shí)刻只能有一個(gè)BMKMapView接受回調(diào)消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中調(diào)用BMKMapView的對(duì)應(yīng)的方法,并處理delegate,代碼如下:
(void)viewWillAppear:(BOOL)animated
{
[_mapView viewWillAppear];
_mapView.delegate = self; // 此處記得不用的時(shí)候需要置nil,否則影響內(nèi)存的釋放
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapView viewWillDisappear];
_mapView.delegate = nil; // 不用時(shí),置nil
}
7、自iOS SDK v2.5.0起,為了對(duì)iOS8的定位能力做兼容,做了相應(yīng)的修改,開發(fā)者在使用過程中注意事項(xiàng)如下: 需要在info.plist里添加(以下二選一,兩個(gè)都添加默認(rèn)使用NSLocationWhenInUseUsageDescription):
NSLocationWhenInUseUsageDescription ,允許在前臺(tái)使用時(shí)獲取GPS的描述
NSLocationAlwaysUsageDescription ,允許永久使用GPS的描述
如圖

8、在使用Xcode6進(jìn)行SDK開發(fā)過程中,需要在info.plist中添加:Bundle display name ,且其值不能為空(Xcode6新建的項(xiàng)目沒有此配置,若沒有會(huì)造成manager start failed)
9、百度地圖iOS SDK v2.5.0起,對(duì)arm64進(jìn)行了支持適配,開發(fā)包體積有所增加。但根據(jù)開發(fā)者在研發(fā)過程中的選擇,最終生成的APP體積并不會(huì)發(fā)生較大的變化。
10、確認(rèn)項(xiàng)目中添加mapapi.bundle文件以及添加方法正確,不能刪除或隨意更改其中files文件夾下的內(nèi)容:
注:mapapi.bundle中存儲(chǔ)了定位、默認(rèn)大頭針標(biāo)注View及路線關(guān)鍵點(diǎn)的資源圖片,還存儲(chǔ)了矢量地圖繪制必需的資源文件。如果您不需要使用內(nèi)置的圖片顯示功能,則可以刪除bundle文件中的image文件夾。您也可以根據(jù)具體需求任意替換或刪除該bundle中image文件夾的圖片文件。添加方式:將mapapi.bundle拷貝到您的工程目錄,直接將該bundle文件托拽至Xcode工程左側(cè)的Groups&Files中即可。若您需要替換定位、指南針的圖標(biāo),請(qǐng)保留原文件名稱,否則不顯示替換的新圖片,默認(rèn)大頭針標(biāo)注與路線關(guān)鍵點(diǎn)的新圖片名稱可自定義名稱。
11、注意BMKManager對(duì)象的生命周期管理,在使用地圖SDK期間不能釋放該對(duì)象,尤其在arc情況下注意避免提前被自動(dòng)釋放,否則,該對(duì)象一旦被釋放,網(wǎng)絡(luò)模塊將不可用,地圖無法加載,檢索失敗。
12、app在前后臺(tái)切換時(shí),需要使用下面的代碼停止地圖的渲染和openGL的繪制(V2.10.0后不需要再調(diào)用):
- (void)applicationWillResignActive:(UIApplication *)application {
[BMKMapView willBackGround];//當(dāng)應(yīng)用即將后臺(tái)時(shí)調(diào)用,停止一切調(diào)用opengl相關(guān)的操作
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[BMKMapView didForeGround];//當(dāng)應(yīng)用恢復(fù)前臺(tái)狀態(tài)時(shí)調(diào)用,回復(fù)地圖的渲染和opengl相關(guān)的操作
}
配置開發(fā)環(huán)境
概述
百度地圖iOS SDK自v2.7.0版本起,向廣大開發(fā)者提供了 .framework形式的SDK開發(fā)包,這種形式的開發(fā)包配置簡單,使用方便,推薦大家使用
如圖,如果我們對(duì)百度地圖還不太熟悉的話,我建議全部下載,我們可以看一下人家的源碼,方便我們開發(fā)

自動(dòng)配置.framework形式開發(fā)包(使用CocoaPods)
注:此種方式只支持導(dǎo)入全量包的SDK,包含百度地圖iOS SDK所有功能
一、前提:安裝CocoaPods
在終端輸入
sudo gem install cocoapods
如果安裝成功,會(huì)有一個(gè)提示
Successfully installed cocoaPods
二、使用CocoaPods導(dǎo)入地圖SDK
在當(dāng)前工程文件(.xcodeproj)所在文件夾下,打開terminal
1.創(chuàng)建Podfile:
touch Podfile
2.編輯Podfile內(nèi)容如下:
pod 'BaiduMapKit' #百度地圖SDK
3.在Podfile所在的文件夾下輸入命令:
pod install (這個(gè)可能比較慢,請(qǐng)耐心等待……)
成功以后,會(huì)出現(xiàn)如下記錄:
Analyzing dependencies
Downloading dependencies
Installing BaiduMapKit (2.9.1)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `***.xcworkspace` for this project from now on.
Sending stats
恭喜你已成功導(dǎo)入百度地圖iOS SDK,現(xiàn)在就可以打開xcworkspace文件,在你的項(xiàng)目中使用百度地圖SDK了
手動(dòng)配置.framework形式開發(fā)包
第一步、根據(jù)需要導(dǎo)入 .framework包
百度地圖 iOS SDK 采用分包的形式提供 .framework包,請(qǐng)廣大開發(fā)者使用時(shí)確保各分包的版本保持一致。其中BaiduMapAPI_Base.framework為基礎(chǔ)包,使用SDK任何功能都需導(dǎo)入,其他分包可按需導(dǎo)入。
將所需的BaiduMapAPI_**.framework拷貝到工程所在文件夾下。
在 TARGETS->Build Phases-> Link Binary With Libaries中點(diǎn)擊“+”按鈕,在彈出的窗口中點(diǎn)擊“Add Other”按鈕,選擇BaiduMapAPI_**.framework添加到工程中。
注: 靜態(tài)庫中采用Objective-C++實(shí)現(xiàn),因此需要您保證您工程中至少有一個(gè).mm后綴的源文件(您可以將任意一個(gè).m后綴的文件改名為.mm),或者在工程屬性中指定編譯方式,即在Xcode的Project -> Edit Active Target -> Build Setting 中找到 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、libsqlite3.0.tbd(xcode7以前為 libsqlite3.0.dylib)、CoreTelephony.framework 、libstdc++.6.0.9.tbd(xcode7以前為libstdc++.6.0.9.dylib)。
(注:紅色標(biāo)識(shí)的系統(tǒng)庫為v2.9.0新增的系統(tǒng)庫,使用v2.9.0及以上版本的地圖SDK,務(wù)必增加導(dǎo)入這3個(gè)系統(tǒng)庫。)
添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加這幾個(gè)系統(tǒng)庫即可。

第三步、環(huán)境配置
在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
如圖

第四步、引入mapapi.bundle資源文件
如果使用了基礎(chǔ)地圖功能,需要添加該資源,否則地圖不能正常顯示mapapi.bundle中存儲(chǔ)了定位、默認(rèn)大頭針標(biāo)注View及路線關(guān)鍵點(diǎn)的資源圖片,還存儲(chǔ)了矢量地圖繪制必需的資源文件。如果您不需要使用內(nèi)置的圖片顯示功能,則可以刪除bundle文件中的image文件夾。您也可以根據(jù)具體需求任意替換或刪除該bundle中image文件夾的圖片文件。
方法:選中工程名,在右鍵菜單中選擇Add Files to “工程名”…,從BaiduMapAPI_Map.framework||Resources文件中選擇mapapi.bundle文件,并勾選“Copy items if needed”復(fù)選框,單擊“Add”按鈕,將資源文件添加到工程中。
第五步、引入頭文件
在使用SDK的類 按需 引入下邊的頭文件:
#import<BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相關(guān)所有的頭文件
#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>//引入計(jì)算工具所有的頭文件
#import<BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周邊雷達(dá)功能所有的頭文件
#import<BaiduMapAPI_Map/BMKMapView.h>//只引入所需的單個(gè)頭文件
下面我們就來創(chuàng)建一個(gè)地圖
初始化BMKMapManager
在您的AppDelegate.h文件中添加BMKMapManager的定義
@interface BaiduMapApiDemoAppDelegate : NSObject <UIApplicationDelegate>{
UIWindow *window;
UINavigationController *navigationController;
BMKMapManager* _mapManager;
}
在您的AppDelegate.m文件中添加對(duì)BMKMapManager的初始化,并填入您申請(qǐng)的授權(quán)Key,示例如下
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ? ? ? // 要使用百度地圖,請(qǐng)先啟動(dòng)BaiduMapManager
_mapManager = [[BMKMapManager alloc]init];
// 如果要關(guān)注網(wǎng)絡(luò)及授權(quán)驗(yàn)證事件,請(qǐng)?jiān)O(shè)定 ? ? generalDelegate參數(shù)
BOOL ret = [_mapManager start:@"在此處輸入您的授權(quán)Key" ?generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
創(chuàng)建BMKMapView
在您的ViewController.m文件中添加BMKMapView的創(chuàng)建代碼,示例如下
- (void)viewDidLoad {
[super viewDidLoad];
BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view = mapView;
}
自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法來控制BMKMapView的生命周期,并且在一個(gè)時(shí)刻只能有一個(gè)BMKMapView接受回調(diào)消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中調(diào)用BMKMapView的對(duì)應(yīng)的方法,并處理delegate,代碼如下:
(void)viewWillAppear:(BOOL)animated
{
? ? [_mapView viewWillAppear];
? ? ?_mapView.delegate = self; // 此處記得不用的時(shí)候需要置nil,否則影響內(nèi)存的釋放
}
-(void)viewWillDisappear:(BOOL)animated
{
? ? ? [_mapView viewWillDisappear];
? ? ? _mapView.delegate = nil; // 不用時(shí),置nil
}
編譯,運(yùn)行,效果如下圖所示:

然后我運(yùn)行出現(xiàn)了報(bào)錯(cuò)

然后我們看一下出錯(cuò)的的原因

如果我們不知道這是什么原因的話我們可以吧報(bào)錯(cuò)復(fù)制粘貼到百度搜索一下會(huì)出現(xiàn)很多解決的方法;
我們先來看一下我這里,跟我們導(dǎo)入的API有關(guān)系,我看了一下原來是我那會(huì)吧真機(jī)測(cè)試的API導(dǎo)入了進(jìn)去,我們重新?lián)Q掉它來看一下
如圖

然后就可以運(yùn)行起來了,就是一個(gè)簡單的百度地圖;
然后我們也會(huì)看到下面提示一個(gè)

然后我們?cè)趇nfo.plist中添加上就可以了

好了這個(gè)就是我們一個(gè)簡單的百度開發(fā)的流程,我們來總結(jié)一下這篇文章:
一:開發(fā)流程
1.需要一個(gè)百度開發(fā)賬號(hào)
2.注冊(cè)一個(gè)新的應(yīng)用
3.下載百度地圖SDK,添加到項(xiàng)目里
4.配置開發(fā)環(huán)境
5.調(diào)試代碼,能運(yùn)行起來
二:注意事項(xiàng)
1.首先需要注意上面提到的注意事項(xiàng),以及開發(fā)流程,一定要一步一步來操作,如果有一步出錯(cuò)就可能會(huì)導(dǎo)致我們的項(xiàng)目運(yùn)行不起來(http://lbsyun.baidu.com/index.php?title=iossdk/guide/attention)
2.還有就是我剛才遇到的,我們導(dǎo)入的API,如果是模擬器的就用模擬器運(yùn)行,如果是真機(jī)的就用真機(jī)運(yùn)行;
另外還有一個(gè)有時(shí)候會(huì)報(bào)錯(cuò),需要我們修改
如圖

一個(gè)簡單的百度地圖開發(fā)流程就是這樣的,如果想詳細(xì)了解其他的功能,請(qǐng)繼續(xù)關(guān)注我后期的更新,后期我會(huì)繼續(xù)把一些其他的功能,如定位,poi檢索,導(dǎo)航等功能給大家寫出來方便大家編寫。
項(xiàng)目源碼地址:https://github.com/Lee0924/BaiDuMap.git
我寫這篇文章希望能幫到大家,如果有寫的不好的地方,希望各位大牛大神給指出來,謝謝!!!