iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Modern Web

無限...寶石?畫布啦!系列 第 25

Day 25 | 帶你環遊世界

  • 分享至 

  • xImage
  •  

day 25 banner

在今天的主題開始之前有一件事我覺得有必說明一下,應用展示都是以“展示”為主要目的,所以並不會帶太多實作的細節;主要是給大家看可以做到什麼樣的成果。

不過我都會把原始碼放在 GitHub 上面,所以也可以去看原始碼,如果關於實作有任何問題的話也歡迎大家提問。

好的,說明完之後就可以開始今天的主題了!

今天要去環遊世界!

其實就是我最前面講到的畫地圖的應用啦,還沒賺到夠錢可以去環遊世界 QAQ

這邊我有找到之前 ShawnL 大大寫的鐵人賽的其中一篇文章。文章連結

如果 google D3 畫地圖之類的關鍵字,就會出現,是一篇很讚的教學文章

因為需要投影法所以把 D3 用進專案是沒有什麼問題, 但我總覺得這樣好像有點殺雞用牛刀。

不過可能也只是我想要有一個理由去做一個地理計算相關的 library xD。

所以這邊也要稍微介紹一下我自己寫的 library @niuee/border

裡面有一些投影的計算 function,另外還有一些計算地理距離的 function。

計算地理距離的參考主要是從這裡研究來的。

這個跟 @niuee/bolt 一樣是非常原始的 library 還沒有很多文件,有興趣的人還是要麻煩你們先看原始碼了QAQ 等我補上文件(時間永遠不夠用)

想要畫地圖首先我們需要解析 GeoJSON 裡面的資料,並且把它們轉換成我們可以畫在無限畫布上面的座標。

轉換指的是經緯度變成可以畫在畫布上的 x 、 y 座標,最常見的就是麥卡托投影法。

但是,怎麼可能只滿足於麥卡托?不不不,我們要做一些更有趣一點的東西,就像是我們物理模擬不是彈跳球一樣。

我們要用的是正投影,會讓我們看起來像是在看一個立體的地球一樣。既然看起來會像立體的地球,那只畫臺灣好像會有點空,所以就畫整個地球吧!

Demo 時間

直接先附上連結好了

請取用

這個 demo 的原始碼跟昨天的是同一個 github,連結在這裡

就是一個簡單的小地球儀?

用觸控板操作可能會比較直覺,不過也可以用滑鼠跟鍵盤,普通的平移可以讓這個小地球儀轉動起來,然後縮放就是縮放這樣。不過現在好像有一點小 bug 鍵盤滑鼠目前是沒有辦法正常操作的,我再找時間來修修。

最近應用篇的文章篇幅好像越來越短,但絕對不是我在水內容或是沒梗開始發散了,是因為這邊比較花時間的是在實作上面,就比較沒有太多餘裕去寫太詳細的內容 QAQ,畢竟應用篇主要就是一個拋磚引玉的概念,或是腦力激盪,看可不可以給大家更多靈感,所以實作細節反而不是那麼重要。

那今天就先這樣,我們明天見~


上一篇
Day 24 | 撞到牆壁會怎樣?
下一篇
Day 26 | 手寫的從前
系列文
無限...寶石?畫布啦!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言