自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

移動(dòng)端地圖技術(shù)分享

移動(dòng)開發(fā)
本人現(xiàn)就職于國(guó)內(nèi)某地圖導(dǎo)航公司,這篇文章是我前段時(shí)間在公司組織技術(shù)分享的一個(gè)PPT,文章內(nèi)容也主要由這個(gè)PPT的內(nèi)容為主,通過這篇文章可以很好的幫你了解地圖導(dǎo)航這個(gè)行業(yè)的相關(guān)技術(shù)。

本人現(xiàn)就職于國(guó)內(nèi)某地圖導(dǎo)航公司,這篇文章是我前段時(shí)間在公司組織技術(shù)分享的一個(gè)PPT,文章內(nèi)容也主要由這個(gè)PPT的內(nèi)容為主,通過這篇文章可以很好的幫你了解地圖導(dǎo)航這個(gè)行業(yè)的相關(guān)技術(shù)。

PPT內(nèi)容主要包括地圖相關(guān)專業(yè)知識(shí)、百度和高德SDK整體框架、數(shù)據(jù)來源、行業(yè)概覽等組成。其中關(guān)于地圖引擎相關(guān)的技術(shù)知識(shí),我向公司地圖引擎開發(fā)同事求證過,這個(gè)PPT也給他們看過,也幫忙指出了其中的一些問題。

這篇文章主要用于分享,其中如果有什么問題,還請(qǐng)多多指出,謝謝!

地圖開發(fā)專業(yè)知識(shí)

經(jīng)緯度

??

??

經(jīng)緯度

經(jīng)緯度是一種地理坐標(biāo)系統(tǒng),主要用來表示地球的球面坐標(biāo)系,經(jīng)緯度可以定位地球的任何一個(gè)位置。南北方向的稱為緯度,東西方向稱為經(jīng)度。

緯度:赤道緯度最長(zhǎng),離赤道越遠(yuǎn)緯度周長(zhǎng)越短,也就是緯度越小。赤道以南稱為南緯,赤道以北稱為北緯。緯度取值范圍是0-90,赤道緯度為90,兩級(jí)最小。

經(jīng)度:經(jīng)度也叫子午線,任意兩條經(jīng)線長(zhǎng)度相等,起始點(diǎn)都在南北極。經(jīng)度以本初子午線為區(qū)分,以東稱為東經(jīng),以西稱為西經(jīng),東經(jīng)為正數(shù),西經(jīng)為負(fù)數(shù)。經(jīng)度取值范圍在0-180,本初子午線為0。東經(jīng)180度也就是西經(jīng)180度就是白令海峽,白令海峽就是國(guó)際換日線,日期相差一天。

按照經(jīng)度,地球被分為24個(gè)時(shí)區(qū),每個(gè)時(shí)區(qū)又有分,分又包含秒。

投影

??

??

投影

??

??

投影

做地圖,投影的概念很重要。我們的地球是圓形的,地球的坐標(biāo)是一個(gè)球面坐標(biāo),球面坐標(biāo)是三維坐標(biāo)(x、y、z),而我們的地圖是是二維的(x、y),需要將球面的三維坐標(biāo)轉(zhuǎn)換為平面的二維坐標(biāo)。

坐標(biāo)轉(zhuǎn)換久用到了投影的概念,常用的投影有:圓柱投影、圓錐投影、方位投影,而在我們地圖導(dǎo)航中使用墨卡托投影。

墨卡托投影


墨卡托投影

百度、高德、Google都使用墨卡托投影,墨卡托投影有一個(gè)很大的弊端,就是在高緯度(南緯、北緯)地區(qū)產(chǎn)生巨大的變形。變形比較嚴(yán)重的地方在于俄羅斯、格林蘭島、非洲、南極洲等高緯度地區(qū)。

墨卡托投影

上面五個(gè)國(guó)家分別是:俄羅斯、澳大利亞、中國(guó)、巴西、加拿大
我們將這五個(gè)國(guó)家放在一個(gè)緯度,來比較這五個(gè)國(guó)家,發(fā)現(xiàn)相差并不太大。但是如果放在上面那張圖中,俄羅斯頂好幾個(gè)中國(guó)大小。

國(guó)外開發(fā)者開發(fā)了一個(gè)網(wǎng)站,這個(gè)網(wǎng)站可以將不同國(guó)家拉到同一個(gè)緯度,這時(shí)候就能顯示出真正比例的國(guó)家面積。

網(wǎng)站地址:??http://thetruesize.com/??

古德投影

??

??

古德投影

古德投影可以避免地圖變形的問題,這種投影將地圖分為幾個(gè)部分,然后沿赤道將幾個(gè)部分連接在一起。我們發(fā)現(xiàn)上面的格林蘭島已經(jīng)被分為兩部分,這種投影并不適合用于開發(fā),而且看起來效果也不太好看。

金字塔模型

??

??

金字塔模型

把一張世界地圖顯示到手機(jī)里是不可能的,所以就引入了金字塔模型的概念(也就是比例尺),我們可以根據(jù)不同的縮放比例,顯示不同的分辨率。

在地圖應(yīng)用中,我們用手指縮放和放大地圖,地圖顯示大小的變換,都是基于金字塔模型來組織瓦片圖的。

瓦片坐標(biāo)系

??

??

瓦片坐標(biāo)系

和金字塔模型配合使用的就是瓦片坐標(biāo)系,在不同的縮放等級(jí)下,同一塊區(qū)域瓦片個(gè)數(shù)也是不一樣的。

瓦片越多就代表這一區(qū)域顯示越詳細(xì),縮放比例也就越大。瓦片坐標(biāo)系在2D和3D的場(chǎng)景下都會(huì)被使用,我們?cè)诰W(wǎng)絡(luò)不好的情況下可以看到地圖瓦片的加載過程以及瓦片的大小、位置。

坐標(biāo)加密

  • CoreLocation中的經(jīng)緯度加密(WGS-84)
  • 高德SDK中的經(jīng)緯度加密(GCJ-02)
  • 百度SDK中的經(jīng)緯度加密(使用GCJ-02再次加密)

根據(jù)中國(guó)法律規(guī)定,地圖提供商必須對(duì)地圖經(jīng)緯度進(jìn)行偏移,國(guó)測(cè)局制定了一套加密標(biāo)準(zhǔn),就是常用的GCJ-02。經(jīng)緯度坐標(biāo)加密主要有兩種格式,GPS坐標(biāo)系 (WGS-84) 和火星坐標(biāo)系 (GCJ-02) ,加密算法是開源的,可以搜索到。

國(guó)際經(jīng)緯度坐標(biāo)標(biāo)準(zhǔn)為WGS-84,國(guó)內(nèi)必須至少使用國(guó)測(cè)局制定的GCJ-02,對(duì)地理位置進(jìn)行首次加密。由于每家導(dǎo)航SDK提供方加密都不統(tǒng)一,所以百度、高德、谷歌多家地圖數(shù)據(jù)并不統(tǒng)一,需要再次進(jìn)行轉(zhuǎn)換。

地圖定位

??

??

地圖定位

移動(dòng)端定位方式主要有三種:GPS、Wi-Fi、基站,但是android和iOS還不太一樣,android可以讓用戶選擇和設(shè)置那種定位方式,但是iOS是由系統(tǒng)為我們選擇的,我們沒有操作定位方式的權(quán)限。iOS不允許有第三方定位,所以現(xiàn)在地圖應(yīng)用都是對(duì)系統(tǒng)定位進(jìn)行的封裝。如果有GPS信號(hào),iOS系統(tǒng)會(huì)優(yōu)先選擇GPS方式定位,然后是Wi-Fi定位,如果Wi-Fi信號(hào)不好就會(huì)選擇基站定位。

在定位中精確度最高的是Google,Google利用大數(shù)據(jù)分析,記錄每一次利用Google地圖的定位。下次再次定位時(shí),直接根據(jù)Mac地址等信息進(jìn)行分析,提高定位精確度。

比較悲催的一個(gè)問題就是,有一些比較老的iOS機(jī)器,沒有GPS定位模塊,例如一些老版本iPad,這種設(shè)備在沒有Wi-Fi的情況下是無(wú)法定位的。

地理編碼和逆地理編碼

??

??

示例圖片

地理編碼:即地理解析,由詳細(xì)的結(jié)構(gòu)化地址得到對(duì)應(yīng)的經(jīng)緯度信息,例如北京市海淀區(qū)中關(guān)村南大街27號(hào)的地址,就可以獲取到一個(gè)唯一的經(jīng)緯度信息。

逆地理編碼:即逆地理解析,由一個(gè)經(jīng)緯度信息獲取一個(gè)結(jié)構(gòu)化地址信息,例如lng:116.31985,lat:39.959836經(jīng)緯度,就可以獲取到類似于上面的地理信息。

在iOS系統(tǒng)API、高德SDK、百度SDK中,都為我們提供了地理編碼和逆地理編碼API,但是需要注意經(jīng)緯度的轉(zhuǎn)換,不同地圖SDK返回的經(jīng)緯度加密方式不同,我們?cè)趥魅虢?jīng)緯度參數(shù)和接收經(jīng)緯度參數(shù)時(shí),都需要做轉(zhuǎn)換。

地圖數(shù)據(jù)來源

??

??

高德

??

??

四維圖新

國(guó)內(nèi)比較活躍的數(shù)據(jù)采集商主要是高德和四維圖新兩家,百度沒有數(shù)據(jù)采集資質(zhì)(最近收購(gòu)了道道通),所以數(shù)據(jù)主要依賴于四維圖新。

四維圖新和國(guó)家測(cè)繪局合作比較密切,數(shù)據(jù)來源主要是國(guó)家測(cè)繪局提供,也有部分自己測(cè)繪的數(shù)據(jù)。高德測(cè)繪和航拍能力還不錯(cuò),主要自己測(cè)繪數(shù)據(jù),部分?jǐn)?shù)據(jù)也依賴國(guó)測(cè)局提供。數(shù)據(jù)測(cè)繪單位互相之間都有合作,會(huì)相互購(gòu)買自己沒有的數(shù)據(jù)。

在中國(guó),谷歌地圖或蘋果地圖等地圖開發(fā)商,數(shù)據(jù)來源幾乎都是這兩家公司。

POI數(shù)據(jù)

??

??

POI

POI數(shù)據(jù)是一種矢量數(shù)據(jù),包括美食、商店、銀行、加油站等都是POI數(shù)據(jù),在地圖上一般都以氣泡或大頭針表示。

數(shù)據(jù)采集可以通過車載GPS攝像機(jī)采集,或從服務(wù)性互聯(lián)網(wǎng)企業(yè)抓取或購(gòu)買,由于百度和高德提供了對(duì)外的SDK,通過用戶使用地圖SDK也可以獲取一些數(shù)據(jù)。

百度的地圖數(shù)據(jù)主要依賴于四維圖新和道道通,高德地圖主要以自采為主。一般這些數(shù)據(jù)也會(huì)和大眾點(diǎn)評(píng)、攜程、口碑等互聯(lián)網(wǎng)服務(wù)商購(gòu)買,相互之間也會(huì)購(gòu)買POI數(shù)據(jù)。

柵格-2D地圖

??

??

珊格圖

??

??

珊格圖

2D場(chǎng)景:輕地圖應(yīng)用,簡(jiǎn)單的位置分享、興趣點(diǎn)標(biāo)注、線路展示等。2D模型展示效果不太好,在縮放比例較小的情況下,看起來比較模糊(縮放比例大一些看起來清晰度還可以)。

柵格模型對(duì)于某一個(gè)地方的描述,是通過很多層圖片疊加組成的,每層代表不同信息(例如道路)。柵格模型一般都會(huì)先渲染一個(gè)底圖,然后是在底圖的基礎(chǔ)上疊加路況、POI等圖層。

珊格圖都是在服務(wù)器預(yù)處理的圖片,從服務(wù)器下載處理好的圖片到本地進(jìn)行拼接即可,由于下載到本地是圖片,本地不能再對(duì)圖層進(jìn)行更改。對(duì)于性能上來說,服務(wù)器進(jìn)行圖片合成性能消耗較大,但是客戶端性能消耗比較小,內(nèi)存占用也比較小,用起來會(huì)比較流暢。

矢量-3D地圖

??

??

矢量地圖

??

??

矢量地圖

3D場(chǎng)景:重地圖應(yīng)用,以LBS為核心功能,需要離線地圖、更好的渲染效果、app內(nèi)導(dǎo)航的。比如打車應(yīng)用、出行導(dǎo)航類應(yīng)用,3D模型渲染后的效果比較好,一般使用導(dǎo)航功能都必須用這個(gè)3D模型。

矢量數(shù)據(jù)是從服務(wù)器將地圖數(shù)據(jù)下載下來,然后在客戶端進(jìn)行合成繪制的,所以我們可以對(duì)地圖的顯示進(jìn)行控制,可定制性更強(qiáng)。矢量圖看起來更佳清晰,渲染效果比較好。但是矢量圖對(duì)手機(jī)性能消耗很厲害,手機(jī)內(nèi)存占用比較高,CPU、GPU消耗都很大。對(duì)于服務(wù)器性能消耗就比2D場(chǎng)景性能小一些,因?yàn)榉?wù)器只是加載原始數(shù)據(jù)和向客戶端進(jìn)行傳輸,將合成繪制等這些圖層渲染的繪制處理交給客戶端來做。提高了客戶端靈活性和更好的效果,犧牲了客戶端的性能,有利有弊。

三維地圖

??

??

三維地圖

三維地圖是以三維地圖數(shù)據(jù)為基礎(chǔ)開發(fā)的,三維地圖看起來更佳立體化,地圖上可以呈現(xiàn)出立體建筑及陰影的效果,而且地圖隨著用戶的操作,樓宇的角度、陰影等效果也會(huì)隨之發(fā)生變化。

在三維地圖過渡過程中,也出現(xiàn)過假三維地圖。這種地圖只能進(jìn)行平面平移,不能進(jìn)行旋轉(zhuǎn)操作,是數(shù)據(jù)平面地圖和三維地圖過渡的產(chǎn)物。

國(guó)外地圖

??

??

國(guó)外地圖

百度地圖目前已經(jīng)可以支持部分國(guó)家的國(guó)外地圖服務(wù),例如新加坡、韓國(guó)、日本、泰國(guó)等國(guó)家??梢栽谧钚碌陌俣鹊貓Dapp上直接查看、搜索這些國(guó)家的一些POI,以及使用導(dǎo)航等功能。

目前為止只有百度一家支持國(guó)外地圖服務(wù),高德暫時(shí)不支持這項(xiàng)服務(wù)。在百度和高德不支持的地方,由于服務(wù)器沒有數(shù)據(jù),所以不會(huì)做渲染,看起來白白的一片。

實(shí)景地圖

??

??

實(shí)景地圖

實(shí)景地圖最開始是Google研發(fā)的,這項(xiàng)技術(shù)需要軟件和硬件相互的配合,以及大量的數(shù)據(jù)處理才能完成。

采集實(shí)景需要各式實(shí)景采集工具,包括汽車采集、自行車采集、人力采集等,這主要是由于需要應(yīng)對(duì)各種采集地點(diǎn)。采集時(shí)將數(shù)據(jù)實(shí)時(shí)綁定GPS位置,這樣就清楚是在哪個(gè)位置采集的。

數(shù)據(jù)采集后需要工程師將數(shù)據(jù)進(jìn)行復(fù)雜處理,才能形成我們看到的實(shí)景數(shù)據(jù)。實(shí)景數(shù)據(jù)一般都是靜態(tài)的,而且不是實(shí)時(shí)更新的。實(shí)景數(shù)據(jù)為了保護(hù)被采集人的用戶隱私,需要對(duì)關(guān)鍵部位進(jìn)行模糊處理,例如臉、車牌照等。

室內(nèi)地圖

??

??

室內(nèi)地圖

室內(nèi)定位是一種結(jié)合3D定位的定位模式,這種定位可以在室內(nèi)進(jìn)行定位。室內(nèi)定位直接定位某個(gè)商鋪在幾樓的某個(gè)位置,而且可以選擇樓層。

在傳統(tǒng)的定位中,樓內(nèi)由于是多層,會(huì)導(dǎo)致定位重疊的問題,而且樓內(nèi)GPS信號(hào)也不太好甚至沒有。所以出現(xiàn)了一些新技術(shù)來實(shí)現(xiàn)樓內(nèi)定位:AGPS(輔助全球衛(wèi)星定位系統(tǒng))、Wi-Fi指紋定位、zigbee芯片定位、RFID智能標(biāo)簽技術(shù)、以及蘋果推出的ibeacon,其中高德使用的是Wi-Fi指紋定位技術(shù)。

百度熱力圖

??

??

百度熱力圖

首先是由百度率先支持熱力圖功能,熱力圖功能預(yù)示著大數(shù)據(jù)時(shí)代越來越近。熱力圖是根據(jù)百度地圖移動(dòng)客戶端和SDK在這些地區(qū)的使用情況推斷出來的,這些推斷數(shù)據(jù)可以是網(wǎng)絡(luò)請(qǐng)求、打開次數(shù)等,通過這些數(shù)據(jù)推斷出人員分布。通過之前百度在CCTV的報(bào)道來看,通過這些數(shù)據(jù)甚至可以預(yù)測(cè)景區(qū)擁堵,防止大型踩踏等群體性事件。

熱力圖隨著同一區(qū)域的密集程度變化,顏色隨之變深。但是由于統(tǒng)計(jì)方式的特點(diǎn),統(tǒng)計(jì)的數(shù)據(jù)并不太準(zhǔn)確,例如白天和夜間就有很大區(qū)別,只是當(dāng)作參考。

地圖SDK架構(gòu)

高德SDK結(jié)構(gòu)

??

??

高德SDK結(jié)構(gòu)

Annotation:?jiǎn)吸c(diǎn)標(biāo)注,繼承自UIView,可以使用UIView的一些基礎(chǔ)屬性,引入了重用機(jī)制(百度也是同樣的實(shí)現(xiàn),包括一些打車軟件的小車,都是使用Annotation實(shí)現(xiàn))。

Overlay:多點(diǎn)標(biāo)注,引擎直接渲染,可以通過SDK的API自定義UI,多點(diǎn)標(biāo)注用于標(biāo)識(shí)路線或某一個(gè)區(qū)域。

Other:云搜索,地理編碼和逆地理編碼,導(dǎo)航路徑規(guī)劃,定位,POI搜索等。

MapKit和高德SDK區(qū)別

??

??

對(duì)比

右邊圖片的高德logo是黑色,并且顯示在右下角,這是iOS系統(tǒng)的MapKit.framework

左邊圖片的高德logo是藍(lán)色,并且顯示在左下角,這是高德自己的SDK。

蘋果的MapKit只是使用了高德的數(shù)據(jù),但是API是蘋果自己開發(fā)的。

百度地圖SDK框架

??

??

百度地圖SDK框架

跨平臺(tái)引擎:

  • 百度地圖的地圖引擎使用openGLES繪制
  • 能夠運(yùn)行于支持C++的手機(jī)系統(tǒng)平臺(tái)
  • 不同平臺(tái)對(duì)應(yīng)用層保持一致的API接口
  • 提供能夠滿足應(yīng)用層的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)
  • 盡量少的依賴系統(tǒng)接口,提高可移植性
  • 靈活性和可擴(kuò)展性

百度地圖對(duì)于高德地圖來說,增加了一些實(shí)用性的功能,例如熱力圖、騎行、個(gè)性化地圖等。這些功能都是高德所沒有的,當(dāng)然高德也有一些很不錯(cuò)的功能,兩者各有優(yōu)點(diǎn)。

百度地圖和高德地圖都有2D和3D功能,2D純平面展示,沒有樓宇拔高效果。

百度地圖SDK框架

??

??

百度地圖SDK框架

百度SDK主要模塊劃分:

  • 地圖(基礎(chǔ)功能,地圖顯示以及操作和各種覆蓋物圖層)
  • 檢索(POI,地理編碼、路徑規(guī)劃等)
  • 定位(提供獨(dú)立定位模塊,經(jīng)緯度根據(jù)國(guó)測(cè)局二次加密)
  • 工具(調(diào)用百度客戶端,坐標(biāo)轉(zhuǎn)換等)
  • 周邊雷達(dá)(檢索用戶信息,查找附近的人,主要用于社交)
  • LBS云(區(qū)域檢索,百度服務(wù)器存儲(chǔ)數(shù)據(jù),可以自己操作,屬于開發(fā)者自有數(shù)據(jù))

百度SDK分為六個(gè)大的模塊,可以按照需求下載對(duì)應(yīng)的模塊,這樣使下載下來的SDK體積變小。

百度鑒權(quán)認(rèn)證策略:用戶可以通過兩種方式與百度開放云進(jìn)行交互,包括認(rèn)證方式和匿名方式。在SDK中很多地方都用到了鑒權(quán)認(rèn)證,例如加載地圖時(shí)認(rèn)證不通過不會(huì)顯示地圖,百度比較看重SDK的鑒權(quán)。

圖層渲染

??

??

圖層渲染

百度地圖渲染分為多個(gè)圖層渲染,每個(gè)圖層渲染的目標(biāo)也不一樣,地圖上自定義標(biāo)注和覆蓋物統(tǒng)稱為地圖覆蓋物,多個(gè)圖層疊加起來形成矢量圖。百度地圖SDK地圖等級(jí)目前為19級(jí),可以根據(jù)縮放等級(jí)的不同渲染建筑物、道路、河流、學(xué)校、公園等內(nèi)容。

百度地圖支持多點(diǎn)觸摸、雙擊放大、多點(diǎn)縮小、旋轉(zhuǎn)等手勢(shì)操作。并且支持畫點(diǎn)、折線、圓、多邊形等操作,并且可以自定義熱力圖、瓦片圖等。

百度個(gè)性化地圖

??

??

百度個(gè)性化地圖

百度地圖在16年1月份推出了個(gè)性化地圖,SDK提供了個(gè)性化地圖模版,通過地圖模版更改底圖顏色和樣式。從百度開發(fā)者平臺(tái)下載到模版,通過地圖模版可以修改地面、水系、草地、道路、鐵路、地鐵、POI等顏色和樣式,然后調(diào)用SDK提供的方法讀取該模版即可。

地圖產(chǎn)業(yè)鏈

??

??

地圖產(chǎn)業(yè)鏈

??

??

活躍統(tǒng)計(jì)

第一張圖是一份14年的統(tǒng)計(jì)報(bào)告,這份統(tǒng)計(jì)報(bào)告統(tǒng)計(jì)不太全面,部分導(dǎo)航應(yīng)用沒有被包含在內(nèi)。

在這份統(tǒng)計(jì)報(bào)告中,我們發(fā)現(xiàn)高德是唯一一個(gè)覆蓋整條產(chǎn)業(yè)鏈的企業(yè),在產(chǎn)業(yè)鏈的每個(gè)環(huán)節(jié)都存在高德的身影。

2014年4月,阿里對(duì)高德完成了15億美元的收購(gòu),高德成為阿里旗下全資子公司。

責(zé)任編輯:倪明 來源: 簡(jiǎn)書
相關(guān)推薦

2012-06-14 16:04:56

移動(dòng)端圖片分享

2015-09-07 10:15:53

移動(dòng)端開發(fā)

2022-07-27 17:40:47

技術(shù)人臉識(shí)別移動(dòng)

2017-03-02 12:39:04

移動(dòng)端iOS監(jiān)控體系

2010-08-02 14:35:11

Flex Chart

2015-09-08 10:39:32

移動(dòng)·開發(fā)技術(shù)周刊

2012-08-08 09:43:58

移動(dòng)端數(shù)據(jù)分享

2020-08-13 15:36:14

移動(dòng)端跨平臺(tái)小程序

2017-04-07 14:01:13

2017-01-19 19:43:53

2022-06-09 15:53:16

移動(dòng)端渲染GPU

2011-11-30 15:51:57

2021-06-30 14:20:16

Swift

2010-06-29 14:51:26

UML建模技術(shù)

2015-08-19 16:13:30

51CTO開發(fā)技術(shù)周刊

2014-08-05 14:31:39

移動(dòng)設(shè)備頁(yè)面尺寸

2013-01-07 10:51:13

地圖服務(wù)移動(dòng)互聯(lián)網(wǎng)

2009-10-23 15:50:07

接入技術(shù)

2018-10-09 15:00:43

Hadoop分布式架構(gòu)

2013-09-04 09:35:54

移動(dòng)端Web App開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)