使用HTML5 canvas做地圖(1)基礎知識

HPhone發表於2013-11-16

    之前一直想使用HTML5技術全新做一套地圖API,可是苦於時間和精力,遲遲未有行動。後來下定決心,利用下班和週末做出一個大體框架出來,現在和網友分享一下自己的整體的一個思路和想法。歡迎大家提出寶貴建議,希望把這套API做的更好,有人真正利用起來。DEMO訪問地址, 猛擊這裡

資料

    我們看到的電子地圖是多個圖層疊加之後的效果,每一個圖層都至少對應著一個地圖服務。我們這樣可以理解服務,我們把簡單的引數傳給後臺,後臺會把原始資料返回來,前端或者應用就可以根據自己需要,渲染成圖。

    這裡返回的資料,不僅僅是向量資料,也包括柵格資料。

    向量資料,包括那些點線面的具體座標、投影或者座標系。向量資料使用場景:資料經常更新,需要知道資料屬性或座標。

    柵格資料,提前生成好的圖片或者動態生成的圖片。柵格資料使用場景:底圖,計算量較大的渲染圖。

    一般來說,一個地圖,最下面是一個底圖,然後在上面疊加一些向量資料和柵格資料。底圖主要是為了在當前比例尺下顯示大概地形要素。底圖變動週期比較長,資料量比較大,不適合使用向量資料載入。現在通用的做法,將地圖分割成一個個的小圖片,然後等到使用的時候拼接起來。我們可以想象一下,之前的屋頂上面的瓦,是怎麼一個形態?是不是一個一個拼接成的,然後形成屋頂的,沒有誰家的瓦,是一個整體吧。這樣做的好處主要有這麼幾個:

    1:可以動態拼接某一範圍的底圖。

    2:可以區域性更新瓦片。

座標系

    座標系分為投影座標系和地理座標系,不多說這個了,因為關於這方面的知識實在是太多了,我對這個不是太擅長,只是說一下常見的就可以了。

    地理座標系,是以經緯度為地圖的儲存單位的。

    投影座標系引數當中都會包括一個地理座標系,實質上是一個平面座標系統,單位通常是米。

    WGS84,是為GPS全球定位系統使用而站立的座標系統,屬於地理座標系。GPS採集到的資料,都是基於WGS84。中國現在使用較多的是西安80或者北京2000,這就需要一個轉換過程,不過具體引數是保密,現在轉換的工具或者公式,轉換都會存在誤差的,也就會經常看到一些資料疊加發生了偏移錯位(當然不僅僅是因為這一個原因,國內的資料釋出到網路上面,都要求做偏移處理的)。WGS84東西方向範圍[-180,180],南北方向範圍[-90,90]。由於座標系和投影實在是太多而且名字加引數太長,不容易記,所以就給每一種座標系定義了一個或多個序列號,WGS84他的wkid是4326。

    Web Mercator屬於投影座標系,這是一個正軸等角投影,投影出來之後呈現給我們的是一個正方形。我們都知道地球是一個橢球形,這樣肯定會有誤差,在大比例尺下面,就可以忽略這個誤差了。不過話說回來,無論使用哪一種座標系都會有誤差的。等角投影,保證了物件形狀不變,而且也保證了方向和位置的相對性性。這就是在眾多的投影當中,我們為什麼會選中它的原因(當然不是我選擇的,基本上網際網路公司底圖都是使用這種投影)。三個wkid代表它3857、102100、102133,用的最多的還是102100。東西和南北方向範圍都是[-20037508.3427892,20037508.3427892]

    下面一節是主要是講述以谷歌和微軟Bing Maps為例,探討瓦片是如何計算的。

相關文章