徒手造咕咚之基礎(chǔ)篇(1):初識高德地圖SDK

前言:地圖,定位等SDK在現(xiàn)在的app中應(yīng)用越來越廣泛了秃诵。無論是百度家的還是高德家的,哪個“正兒八經(jīng)”的app要是不用點他們的產(chǎn)品總感覺這個檔次就上不去(有實力的大廠除外)~尤其在大數(shù)據(jù)時代,用戶什么時間在什么坐標,停留了多久等數(shù)據(jù)看似無用慢哈,實際上早已被很多app暗中上傳、暗中分析、暗中觀察了有木有震蒋!


扯太遠,今天想就以前做過的一款運動app(類似咕咚)簡單的談?wù)劯叩耂DK的使用整個系列大概會寫七八篇鳖昌,每篇針對不同的點來談?wù)劯叩孪嚓P(guān)SDK的具體運用一環(huán)套一環(huán)央渣,最后連起來,一個簡版的 咕咚 運動軟件就造出來啦射窒! 高德api并不完美藏杖,一樣有很多坑,寫這個系列的目的一是總結(jié)一下之前get到的知識脉顿,另一方面也是幫助需要做類似功能的朋友們更好的運用SDK蝌麸,避免一些大坑~

高德SDK涉及到東西很多,跟百度一樣艾疟,有 定位来吩,地圖,導航等好幾大模塊蔽莱,既然都說了要徒手造咕咚弟疆,而咕咚的核心是運動數(shù)據(jù)記錄,涉及到定位碾褂!定位又需要地圖作為基礎(chǔ)兽间,so,這里先通過幾個demo帶大家 從基本的地圖SDK入手正塌!

一嘀略、初識高德地圖SDK常見類

整個高德地圖api也是采用面向?qū)ο蟮脑O(shè)計思路,SDK包含了各種具有不同能力的類乓诽,開發(fā)者要做的其實很簡單

  1. 明確要實現(xiàn)的功能帜羊。
  2. 找到與之有關(guān)的類,查看該類在官方demo中的應(yīng)用
  3. 寫邏輯實現(xiàn)

廢話不多說鸠天,下面直接重點介紹最最最重要的幾個類

MapView:地圖對象讼育。

整個地圖view,它的內(nèi)部包含了很多其他的小對象稠集,如一個“覆蓋物”奶段,一條“線”,一個“點”剥纷,一個“面”等痹籍,它有和activity類似的生命周期,并且需要在activity調(diào)用生命周期的方法里一起調(diào)用如:

/*
 * 方法必須重寫
 */
@Override
protected void onPause() {
    super.onPause();
    mapView.onPause();
    //deactivate();  
}


AMap:地圖控制器晦鞋。

每個MapView都會有一個地圖控制器蹲缠,顧名思義棺克,地圖控制器就是用來控制這個地圖對象的。 怎么個控制法线定?問得好娜谊!
整個地圖SDK涉及到的功能無外乎

  1. 地圖旋轉(zhuǎn),縮放斤讥,自帶部件顯示(主要包含地圖上的指南針纱皆,比例尺等東西)
  2. 地圖添加點,線芭商,面抹剩,立體物
  3. 添加各種監(jiān)聽(地圖加載狀態(tài)監(jiān)聽,物體點擊監(jiān)聽蓉坎,物體狀態(tài)改變監(jiān)聽等等等一大堆,)
  4. 控制相機 (相機模塊下面會有介紹胡嘿,不要急)
  5. 地圖截屏蛉艾,距離、面積計算等

總結(jié)下來就這么幾大類衷敌,幾乎每種都需要用到AMap~所以勿侯,這個類很強大,很重要缴罗。


CameraUpdateFactory:相機工場類助琐。

這是一個很容易被名字誤導的類,Camera面氓?自拍么兵钮?

要知道,地圖是很大的舌界,手機屏幕是很小的掘譬,如何在很小的屏幕上去呈現(xiàn)這個很大的地圖呢?自然就需要縮放和截取呻拌,屏幕上看到的地圖永遠是經(jīng)過 縮小葱轩,和截取的一部分區(qū)域!而具體 縮放多少藐握,截取呈現(xiàn)哪一部分呢靴拱?這個就是通過CameraUpdateFactory來控制的。

結(jié)合名字理解:相機更新工場猾普,不難猜出袜炕,工場設(shè)計模式,那么其返回CameraUpdate對象抬闷,作用是更新當前的顯示區(qū)域妇蛀。

例如:目前的比例尺是x:1耕突,屏幕顯示的是上梅林卓越這邊的縮放圖。如果我想實現(xiàn)點擊某個按鈕后评架,屏幕由上梅林切換到相隔數(shù)千米外的景田蓮花山(切換的方式有多種眷茁,閃切或者帶動畫的平移過去等都能實現(xiàn)) 就要用上CameraUpdateFactory了。

一個這么厲害的類纵诞,自然封裝了很多了不得的方法~不會用不要急上祈,這里先了解就好。


LatLng:高德坐標點浙芙。

這是一個包含經(jīng)度longitude 和緯度latitude的坐標類登刺,上面那個示例中的第一行代碼其實就是獲取一個高德坐標點而已。

所謂點連成線嗡呼,咕咚的運動記錄里面其實就是將一個個類似LatLng的點連起來而已纸俭,最后附上顏色,看起來就成了一段連貫的線~

至于怎么做到那么平滑南窗,還有為什么說是類似LatLng的點 這兩個問題后面回答~


Marker :地圖覆蓋物

這是一個灰常有用的類揍很,顧名思義,覆蓋在地圖上的物體万伤! 任何東西(圖片窒悔,文字,一個View) 都可以通過構(gòu)造一個Marker來添加到地圖MapView上面顯示出來~先看效果

如圖敌买。在剛才移動到的坐標上添加一個Marker(其實是一個View)简珠,看看代碼:

   LatLng start=new LatLng(dps.get(0).getLat(),dps.get(0).getLon());  //還是獲取那個點LatLng
    MarkerOptions markerOptions = new MarkerOptions();   //Marker的構(gòu)造輔助類MarkerOptions,其實就是設(shè)置Marker的各種屬性
    markerOptions.anchor(0.5f, 0.5f);                    //中心基準位置
    markerOptions.icon(BitmapDescriptorFactory.fromView(getStartViewByXML(mContext, R.drawable.testhead)));
   //上面這行是重點  設(shè)置覆蓋物的icon  通過BitmapDescriptorFactory的fromView方法虹钮,顧名思義~就是從一個view加載聋庵,
   //所以getStartViewByXML(mContext, R.drawable.testhead)方法就是LayoutInflater出一個view罷了,只不過恰巧芙粱,這個view很美U洳摺!宅倒!
    markerOptions.visible(true);                       //設(shè)置可見
    markerOptions.position(start);                     //這個 覆蓋物的位置攘宙,就是那個坐標點嘍
    markerOptions.perspective(true).draggable(false);  //不讓拖拽~
    markerOptions.setFlat(true);                      //屬性太多 這個忘了,拐迁,不是很重要
    aMap.addMarker(markerOptions);                   // 看到?jīng)]蹭劈,,aMap又登場了线召! 簡直就是場控


Polyline :線段

到這里~基礎(chǔ)篇的主角登場啦铺韧!沒錯,就是線段缓淹!咕咚運動的軌跡回放模塊核心就是呈現(xiàn)你運動的軌跡哈打,而線段塔逃,就是軌跡的具體表現(xiàn)形式!這里上三張圖對比

第一張:咕咚軌跡回放截圖
第二張:之前的基礎(chǔ)上添加了另外一個不太美的Marker料仗,然后連成Polyline
第三張:將第一張放大湾盗,可以看到原來圖1中平滑的軌跡立馬出現(xiàn)明顯的棱角(9個點連起來的8段線)

結(jié)論:咕咚的軌跡回放功能的本質(zhì)就是記錄下運動過程中的若干坐標點,最后將這些點兩兩連成線就成了軌跡立轧!就是這么簡單8穹唷!

到此氛改,徒手造咕咚系列的第一篇就寫完了帐萎!你看吧,其實咕咚核心的功能之一:軌跡回放模塊灰常簡單胜卤,簡單到筆者只是調(diào)用幾個高德api疆导,秀下恩愛,擼兩行代碼就差不多實現(xiàn)了~


最后的最后再BB兩句~慢跑是很一項很不錯的運動葛躏!希望大家在“沉迷工作無法自拔”的同時每周能抽出點時間出去跑兩步久坐是鬼,長吹空調(diào)的話,偶爾出點汗紫新,對身體是極好的呦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末李剖,一起剝皮案震驚了整個濱河市芒率,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌篙顺,老刑警劉巖偶芍,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異德玫,居然都是意外死亡匪蟀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門宰僧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來材彪,“玉大人,你說我怎么就攤上這事琴儿《位” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵造成,是天一觀的道長显熏。 經(jīng)常有香客問我,道長晒屎,這世上最難降的妖魔是什么喘蟆? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任缓升,我火速辦了婚禮,結(jié)果婚禮上蕴轨,老公的妹妹穿的比我還像新娘港谊。我一直安慰自己,他們只是感情好尺棋,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布封锉。 她就那樣靜靜地躺著,像睡著了一般膘螟。 火紅的嫁衣襯著肌膚如雪成福。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天荆残,我揣著相機與錄音奴艾,去河邊找鬼。 笑死内斯,一個胖子當著我的面吹牛蕴潦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俘闯,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼潭苞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了真朗?” 一聲冷哼從身側(cè)響起此疹,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遮婶,沒想到半個月后蝗碎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡旗扑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年蹦骑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臀防。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡眠菇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袱衷,到底是詐尸還是另有隱情琼锋,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布祟昭,位于F島的核電站缕坎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏篡悟。R本人自食惡果不足惜谜叹,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一匾寝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荷腊,春花似錦艳悔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疾忍,卻和暖如春乔外,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背一罩。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工杨幼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聂渊。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓差购,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汉嗽。 傳聞我的和親對象是個殘疾皇子欲逃,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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