在今天的主題開始之前有一件事我覺得有必說明一下,應用展示都是以“展示”為主要目的,所以並不會帶太多實作的細節;主要是給大家看可以做到什麼樣的成果。
不過我都會把原始碼放在 GitHub 上面,所以也可以去看原始碼,如果關於實作有任何問題的話也歡迎大家提問。
好的,說明完之後就可以開始今天的主題了!
今天要去環遊世界!
其實就是我最前面講到的畫地圖的應用啦,還沒賺到夠錢可以去環遊世界 QAQ
這邊我有找到之前 ShawnL 大大寫的鐵人賽的其中一篇文章。文章連結
如果 google D3 畫地圖之類的關鍵字,就會出現,是一篇很讚的教學文章
因為需要投影法所以把 D3 用進專案是沒有什麼問題, 但我總覺得這樣好像有點殺雞用牛刀。
不過可能也只是我想要有一個理由去做一個地理計算相關的 library xD。
所以這邊也要稍微介紹一下我自己寫的 library @niuee/border
。
裡面有一些投影的計算 function,另外還有一些計算地理距離的 function。
計算地理距離的參考主要是從這裡研究來的。
這個跟 @niuee/bolt
一樣是非常原始的 library 還沒有很多文件,有興趣的人還是要麻煩你們先看原始碼了QAQ 等我補上文件(時間永遠不夠用)
想要畫地圖首先我們需要解析 GeoJSON 裡面的資料,並且把它們轉換成我們可以畫在無限畫布上面的座標。
轉換指的是經緯度變成可以畫在畫布上的 x 、 y 座標,最常見的就是麥卡托投影法。
但是,怎麼可能只滿足於麥卡托?不不不,我們要做一些更有趣一點的東西,就像是我們物理模擬不是彈跳球一樣。
我們要用的是正投影,會讓我們看起來像是在看一個立體的地球一樣。既然看起來會像立體的地球,那只畫臺灣好像會有點空,所以就畫整個地球吧!
直接先附上連結好了
這個 demo 的原始碼跟昨天的是同一個 github,連結在這裡
就是一個簡單的小地球儀?
用觸控板操作可能會比較直覺,不過也可以用滑鼠跟鍵盤,普通的平移可以讓這個小地球儀轉動起來,然後縮放就是縮放這樣。不過現在好像有一點小 bug 鍵盤滑鼠目前是沒有辦法正常操作的,我再找時間來修修。
最近應用篇的文章篇幅好像越來越短,但絕對不是我在水內容或是沒梗開始發散了,是因為這邊比較花時間的是在實作上面,就比較沒有太多餘裕去寫太詳細的內容 QAQ,畢竟應用篇主要就是一個拋磚引玉的概念,或是腦力激盪,看可不可以給大家更多靈感,所以實作細節反而不是那麼重要。
那今天就先這樣,我們明天見~