Mapbox源碼分析(1)樣式加載

簡介:

通過源碼檬嘀,我們來一步步分析Mapbox地圖引擎如何進(jìn)行不同樣式的數(shù)據(jù)加載的槽驶,這里是基于5.3.0的版本.

通過官網(wǎng)案例,我們知道在SDK中配置了不同的style樣式給我們使用鸳兽,通過配置不同style,便可加載不同的類型地圖掂铐,那么我們便可以從setStyleUrl()這個(gè)方法著手.這里我們從MapView的setStyleUrl()方法看起

這里我們看到,他將相關(guān)配置直接往下傳到底層了,從nativeMapView這個(gè)名字可以看出這是一個(gè)和原生相關(guān)的地圖類堡纬,那么我們發(fā)現(xiàn)即使不傳任何style,地圖也會初始化一個(gè)默認(rèn)樣式的地圖,那么這個(gè)默認(rèn)地圖是在哪配置的呢蒿秦,我們使用AndroidStudio的Find Usages功能烤镐,我們看到MapboxMap這個(gè)類中的onStart()方法也使用了這個(gè)方法

我們繼續(xù)Find Usages這個(gè)方法,看看在哪里調(diào)用的棍鳖,我們發(fā)現(xiàn)在MapView的initialiseDrawingSurface()方法里初始化畫布的同時(shí)炮叶,也初始化了地圖

到這里,加載默認(rèn)樣式已經(jīng)很清晰了渡处,我們繼續(xù)看nativeMapView.setStyleUrl()方法

這里我們看到這里將配置簡單的往底層傳镜悉,便沒做什么了,這里我們?nèi)炙阉饕幌耼ativeSetStyleUrl字符串医瘫,看到和NativeMapView對應(yīng)的底層原生文件native_map_view.cpp中

這里我們看到這里將setStyleUrl()方法和nativeSetStyleUrl()方法進(jìn)行綁定侣肄,我們看下底層NativeMapView的setStyleUrl()方法,這里我們看到它調(diào)用了MapView的getStyle()方法醇份,拿到Map::Impl的Style對象稼锅,然后調(diào)用Style對象的loadURL()方法

它又轉(zhuǎn)給它自己的實(shí)現(xiàn)類的方法了,這里我們看下Style::Impl的loadURL()方法

這里我們看到它首先通知觀察者樣式正在加載中僚纷,然后調(diào)用fileSource.request()方法矩距,這里我們看下參數(shù),一個(gè)通過Resource的style方法將url分類然后封裝成Resource對象怖竭,另一個(gè)則是回調(diào)函數(shù)锥债,用于處理獲取的響應(yīng)數(shù)據(jù)Response

這里我們往下看,看看如果處理請求的數(shù)據(jù)的痊臭,我們看到回調(diào)函數(shù)中有這么一行代碼哮肚,parse(*res.data);從名字上看,這應(yīng)該是解析數(shù)據(jù)的函數(shù)广匙,我們看下具體實(shí)現(xiàn)

這里我們看到通過Parser.parse()方法將解析的json字符串進(jìn)行解析绽左,然后進(jìn)行一些數(shù)據(jù)的配置,包括數(shù)據(jù)源艇潭,圖層拼窥,精靈,字體蹋凝,默認(rèn)縮放等級和經(jīng)緯度鲁纠,方向等等,最后調(diào)用onStyleLoaded()方法通知觀察者樣式加載結(jié)束.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鳍寂,一起剝皮案震驚了整個(gè)濱河市改含,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌迄汛,老刑警劉巖捍壤,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骤视,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹃觉,警方通過查閱死者的電腦和手機(jī)专酗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盗扇,“玉大人祷肯,你說我怎么就攤上這事×屏ィ” “怎么了佑笋?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斑鼻。 經(jīng)常有香客問我蒋纬,道長,這世上最難降的妖魔是什么坚弱? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任颠锉,我火速辦了婚禮,結(jié)果婚禮上史汗,老公的妹妹穿的比我還像新娘琼掠。我一直安慰自己,他們只是感情好停撞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布瓷蛙。 她就那樣靜靜地躺著,像睡著了一般戈毒。 火紅的嫁衣襯著肌膚如雪艰猬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天埋市,我揣著相機(jī)與錄音冠桃,去河邊找鬼。 笑死道宅,一個(gè)胖子當(dāng)著我的面吹牛食听,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播污茵,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼樱报,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泞当?” 一聲冷哼從身側(cè)響起迹蛤,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盗飒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚷量,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年逆趣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝶溶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,777評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汗贫,死狀恐怖身坐,靈堂內(nèi)的尸體忽然破棺而出秸脱,到底是詐尸還是另有隱情落包,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布摊唇,位于F島的核電站咐蝇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巷查。R本人自食惡果不足惜有序,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岛请。 院中可真熱鬧旭寿,春花似錦、人聲如沸崇败。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽后室。三九已至缩膝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岸霹,已是汗流浹背疾层。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贡避,地道東北人痛黎。 一個(gè)月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像刮吧,于是被迫代替她去往敵國和親舅逸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評論 2 351

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