由於原本手冊上查詢國際太空站掠過特定位置時間的 API 已經停止服務,所以本文改成使用查詢國際太空站目前位置的 API,並試圖透過另一個 API 找出離該位置最近的城市名稱。
提供國際太空站目前位置的 API 網址如下:
http://api.open-notify.org/iss-now.json
呼叫後會得到以下(整理過格式)的結果:
其中 longitude 與 latitude 分別是國際太空站目前位置的經度與緯度,你也可以透過以下網址:
https://spotthestation.nasa.gov/tracking_map.cfm
查看目前位置:
因此只要解析傳回的資料,即可取得目前位置。
有了經緯度,我們想知道的是這個地點在哪裡,這可以透過 GeoDataSource 提供的 API 查詢,使用前必須註冊帳戶申請金鑰,請依照以下步驟註冊申請:
按一下 SIGN UP NOW 開始註冊。
填入你的電子郵件位址以及你想使用的密碼,最後按 CONTINUE 繼續:
輸入全名選取國家後再按 CONTINUE 繼續:
勾選同意授權條款後按 CONTINUE 繼續:
按 CONFIRM ORDER 完成:
它會寄出一封認證信給你。
請收信完成認證步驟:
按下確認信中的 CONFIRM & ACTIVATE YOUR ACCOUNT 完成。
登入取得金鑰:
回到剛剛註冊頁面按右上角的 Log in:
填入註冊的電子郵件位址以及密碼後按 LOGIN 登入:
選 Products/Web Service/Location Search:
在免費價格那一列按 ADD TO CART 加入購物車:
確認費用為 0 後按 CHECKOUT 結帳:
再一路按 CONTINUE 完成:
最後按下 CONFIRM ORDER 完成:
查看金鑰:
請按右上角 My Account:
按左側的 License 即可在頁面上看到你的金鑰。
取得金鑰後,就可以使用 API,在 Products/Web Service/Location Search 頁面可以看到使用方法,API 網址是:
以台北火車站為例,只要在 Google 地圖上特定地點按滑鼠右鍵,就可以看到經緯度:
左邊是經度、右邊是緯度,代入剛剛的 API 網址會得到如下(經過整理格式)的回應(你可以在瀏覽器網址列輸入測試):
其中 city 項目就是離指定經緯度最近的城市內區域名稱,本例應該是建成(從第圖上看),而 region 項目是城市名稱,country 項目則是該城市所在的國家。
以下就是串接上述兩個 API 並顯示在 OLED 上的範例:
請記得修改 7,8 行為你要連接的無線網路名稱與密碼,並修改第 10 行為剛剛從註冊取得的金鑰。底下是我執行程式時的位置:
實際的輸出結果:
OLED 上顯示的結果為:
如果目前位置在海上,就會查詢不到對應的城市或國家名稱,看到的輸出就會是這樣:
OLED 仍然會顯示經緯度,但查詢城市結果是 fail: