iOS GoogleMaps的集成和詳細(xì)使用

陸陸續(xù)續(xù)工作也快2年了,國內(nèi)的一些sdk也用了不少践瓷,剛開工作的時候還是學(xué)習(xí)階段院喜,總是在論壇學(xué)習(xí),還從來沒有寫過一篇像樣的文章拿去和同行分享晕翠,初來乍到許多東西接觸也只是皮毛喷舀,慢慢的才會深究,想來寫了也是沒什么可以拿去分享淋肾,最近新入職了一家公司硫麻,接觸到了一些從來沒用過的SDK,包括一些地圖和海外支付的SDK樊卓,這篇文章主要講一下如果集成GoogleMaps并將其使用到我們的項目中拿愧,小哥哥初來乍到,才疏學(xué)淺碌尔,有些東西還不是很熟練浇辜,而且書寫的格式可能不是很正規(guī),各位大神看過之后唾戚,請多多指教柳洋,直言不諱,THX~


NO.1 集成GoogleMaps

在iOS里面集成一個SDK的方式有很多種颈走,我就不一一列出了膳灶,我大都是手動導(dǎo)入和Cocoapods導(dǎo)入,兩種各有各的好處立由,舉個例子轧钓,例如現(xiàn)在你的項目中導(dǎo)入了某個三方庫需要修改而且不希望和你一起工作的同事因為手滑不小心update一下,建議使用手動導(dǎo)入锐膜,如果是特別官方的三方庫毕箍,例如AFN和高德GoogleMaps這種,人家內(nèi)部已經(jīng)做的很成熟了道盏,也無需進(jìn)行改進(jìn)而柑,主要進(jìn)行一些簡單封裝文捶,更好的劃分業(yè)務(wù)邏輯即可。

Cocoapods導(dǎo)入GoogleMaps媒咳,一些最基本的Cocoapods用法在此不進(jìn)行贅述粹排,pod search 你要加入的三方庫,然后查看最新版本涩澡,在Podfile里面按照格式加入代碼顽耳,回到終端 pod install即可,如果發(fā)現(xiàn)導(dǎo)入的并非官方給出最新的SDK妙同,可以從更新pod源和pod xxxsdk update 入手射富,百試不厭...


NO.2 初始化CLLocationManager和GoogleMapsSDK

使用GoogleMaps和使用其他官方SDK一樣需要appid或者Key或者secret,用你申請好的key在APPdelegate.m文件中進(jìn)行初始化粥帚。代碼如下


有木有很簡單胰耗,一句代碼即可,對比極光啊什么亂七八糟的很簡單芒涡,嘻嘻柴灯,||0.0其實高德也差不多啦~但是和高德以及百度GoogleMaps最不同的地方,就是他要用apple官方給出的corelocation庫進(jìn)行定位费尽,然后獲取當(dāng)前UserLocation弛槐,用location的latitude和longitude去顯示用戶的位置,這里有一些細(xì)節(jié)需要優(yōu)化依啰,按照博主的方法來乎串,不需要走彎路,就在APPdelegate.m里面初始化CoreLocationManager最好速警,這樣可以在你的HomePage界面進(jìn)行監(jiān)聽用戶的定位事件給出對應(yīng)的處理叹誉,不需要再次初始化,做一個全局的Manager變量最好闷旧,代碼如下

在此啟動CLLocationManager即可

NO.3用GoogleMps展示當(dāng)前用戶的位置

展示用戶當(dāng)前位置是一個地圖SDK最基本也是最簡單功能长豁,當(dāng)然GoogleMaps也不例外,讓我驚喜的是GoogleMaps已經(jīng)在內(nèi)部給使用者做好了定位點的朝向處理忙灼,不需要開發(fā)者自己處理匠襟,這個我在用高德地圖已經(jīng)開發(fā)過,如果有需要的同學(xué)可以在評論給回復(fù)该园,博主偷閑看到會答復(fù)噠~

核心代碼如下

取到全局的CLLocationManager

根據(jù)CLLocationManager獲取當(dāng)前用戶的經(jīng)緯度

拿到userlocation去初始化GoogleMaps

看到這里給讀者介紹一下GMSCameraPosition這個類酸舍,和高德百度等國內(nèi)地圖又一個不同的是,GoogleMaps視角引用的是一個Camera的概念里初,很好理解啃勉,就是你希望看的視角是怎樣的,都可以用這個類GMSCameraPosition去設(shè)定双妨,比如你希望你看到地圖的縮放范圍淮阐,中心是哪里叮阅,通通可以用這個類去處理,是不是很niceF亍浩姥!讀到這里,就可以看到當(dāng)前的所處位置啦状您,沒圖說杰寶是吧及刻,上圖~

因為我的手機(jī)是en語言環(huán)境,所以顯示的都是英文竞阐,可以根據(jù)手機(jī)的語言環(huán)境進(jìn)行修改地標(biāo)的顯示語言。

NO.4 GoogleMaps的主要代理方法

4.1 點擊地圖調(diào)用

4.2 map移動之后調(diào)用

4.3 map將要移動調(diào)用

4.4 點擊map上的大頭針調(diào)用

4.5點擊GMSMarker的InfoWindow調(diào)用

我給出只是幾個簡單的代理方法暑劝,不要小瞧這幾個代理方法骆莹,你需要的功能例如添加大頭針,點大頭針實現(xiàn)固定的Action担猛,或者點擊大頭針規(guī)劃路線等等等一系列Action幕垦,這些代理方法都可以幫你解決,具體看你如何運(yùn)用傅联,不做贅述先改,下面講一下如果利用GoogleMaps進(jìn)行線路規(guī)劃。

NO.5 線路規(guī)劃

用過高德和百度的小伙伴應(yīng)該有用過線路規(guī)劃這個功能蒸走,應(yīng)用場景很多仇奶,例如用戶想查看當(dāng)前位置和目的地之間的線路,并且顯示距離和時間等信息等等比驻。但是GoogleMaps又很不同的该溯,GoogleMaps很傲嬌的沒有和國內(nèi)的地圖SDK一樣給出SDK接口,但是無妨别惦,GoogleMaps API里面有提供公共的接口去供開發(fā)者使用狈茉。https://maps.googleapis.com/maps/api/directions/json?%@&origin=%@&destination=%@&mode=walking

加上如此url即可掸掸,%@作為占位氯庆,替換你需要填寫的參數(shù),StackOverFlow解決方法如此扰付,origin是用戶當(dāng)前的位置的經(jīng)緯度堤撵,destination是目的地的經(jīng)緯度,mode代表你的交通方式羽莺,像我這種低碳出門方式的上班族當(dāng)然是walking粒督,雖然我有灰機(jī),但是從來不開禽翼,嘻嘻~

在博主這里屠橄,我給這個方法封裝了一下族跛,供讀者參考,如下~


具體的googlemap api的返回數(shù)據(jù)json我就不在此做贅述锐墙,讀者可以自己去親測一下礁哄。

博主這樣寫是取到了距離(distance)和時間(duration),而且根據(jù)json中的路徑編碼繪制路徑溪北,代碼如下~

這里有有一些業(yè)務(wù)邏輯代碼桐绒,可以忽略掉。

NO.6 Ending

這是博主第一次寫帖子之拨,因為百度這種搜索GoogleMaps的講解帖子很少茉继,我起初做的時候也是搜了很多,但是看完感覺并沒有完全解決了我想要的問題蚀乔,在做這次項目的時候烁竭,基本是到國外網(wǎng)站去查找解決方法,這篇帖子旨在解決大家的問題和大家一齊進(jìn)步吉挣,有些東西在沒有接觸的情況下派撕,先去api文檔作了解是最好的,先了解這個三方庫的一些類和方法睬魂,再去著手項目终吼,就會有了大體的思路。

NO.7 想說的話

我曾經(jīng)看過一篇帖子氯哮,看到結(jié)尾之前覺得全文無亮點际跪,但是看到結(jié)尾處亮了全文,我想repost一下

在技術(shù)學(xué)習(xí)的道路上喉钢,閱讀量和代碼量絕不能現(xiàn)行提升你的技術(shù)水平垫卤。同樣寫文章也如此,作者所寫的文章完全是基于自己對技術(shù)的理解出牧,在寫作時也力求形象不抽象穴肘,絕不copy充數(shù),所以也歡迎大家關(guān)注和參與討論舔痕。技術(shù)學(xué)習(xí)絕不能孤膽英雄獨闖天涯评抚,而應(yīng)該是一群人在一起的交流碰撞,享受智慧火花的狂歡伯复。希望我的文章能成為你的盛宴慨代,也渴望你的建議能成為我的大餐。

博主還會不定時更新啸如,下篇文章具體講解海外支付Stripe侍匙!

good luck!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叮雳,一起剝皮案震驚了整個濱河市想暗,隨后出現(xiàn)的幾起案子妇汗,更是在濱河造成了極大的恐慌,老刑警劉巖说莫,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杨箭,死亡現(xiàn)場離奇詭異,居然都是意外死亡储狭,警方通過查閱死者的電腦和手機(jī)互婿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辽狈,“玉大人慈参,你說我怎么就攤上這事」蚊龋” “怎么了驮配?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尊勿。 經(jīng)常有香客問我,道長畜侦,這世上最難降的妖魔是什么元扔? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮旋膳,結(jié)果婚禮上澎语,老公的妹妹穿的比我還像新娘。我一直安慰自己验懊,他們只是感情好擅羞,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著义图,像睡著了一般减俏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碱工,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天娃承,我揣著相機(jī)與錄音,去河邊找鬼怕篷。 笑死历筝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的廊谓。 我是一名探鬼主播梳猪,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蒸痹!你這毒婦竟也來了春弥?” 一聲冷哼從身側(cè)響起呛哟,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惕稻,沒想到半個月后竖共,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡俺祠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年公给,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜘渣。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡淌铐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔫缸,到底是詐尸還是另有隱情腿准,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布拾碌,位于F島的核電站吐葱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏校翔。R本人自食惡果不足惜弟跑,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望防症。 院中可真熱鬧孟辑,春花似錦、人聲如沸蔫敲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈嘿。三九已至貌虾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裙犹,已是汗流浹背酝惧。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留伯诬,地道東北人晚唇。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像盗似,于是被迫代替她去往敵國和親哩陕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件悍及、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評論 4 62
  • 我聽見有人在唱歌 輕輕的 慢慢的訴說 舍不得難過 何況我已經(jīng)答應(yīng)了承諾 眼淚 畢竟是軟弱……
    回川閱讀 228評論 0 0
  • 天池當(dāng)硯點青墨闽瓢,舞卷揮毫卷滿車。岱岳石碑當(dāng)筆架心赶,南邊海蔚相如模扣讼。
    蔣光頭jL94430閱讀 348評論 20 29
  • 全書主要圍繞六大原理開展,分別是互惠原理缨叫,承諾和一致原理椭符,社會認(rèn)同原理,喜好原理耻姥,權(quán)威原理销钝,以及稀缺原理。全文結(jié)構(gòu)...
    進(jìn)擊的Unicorn閱讀 557評論 0 1