這次要使用到的元件是位置感測器,在模擬器上用的時候,可以直接調整位置測試。但是在手機上用的時候,就得要打開 gps的功能,才能抓取位置。
記錄一下:
App Inventor學習記錄114-位置感測器,用經緯度座標計算地圖上兩點的距離
照舊,先上範例的 gif檔
就是在地圖上選擇一個位置之後。
接下來只要 gps位置感測器有變化,那麼就計算兩個點位置的直線距離。
雖然在地圖上兩個看起來是平面的,但實際上是地球上的兩個點,所以這裡用半正矢公式來取距離。
這兩個點的位置,則是使用位置感測器抓出來的經緯度值
半正矢公式請見維基百科介紹
畫面編排的部份如下。
主要就是位置感測器要拉進來使用。
設定初始點的按鈕,就是用來決定第一個點的位置。當然也可以建一個清單,把幾個地點建進去,再用下拉式選單來選擇也是可以的。
全部的程式碼如下 :
第 1部份的程式碼說明 :
建立變數_緯度_固定。
建立變數_經度_固定。
這兩個變數,會在按下按鈕_設定初始點的時候,去抓位置感測器當下的經緯度值來替換。
建立變數_緯度_gps。
建立變數_經度_gps。
這兩個變數,則是位置感測器有變化的時候,就會即時的更新數值。也就是說當我們在手機上打開 gps,而且走來走去移動位置,這兩個值就會一直跟著改變。
這裡補充一下,這個範例中,位置感測器的計時間隔設定為 1000ms。
主要是因為 gps的反應沒有那麼快,所以把計時間隔的時候縮短,讓它反應快一些。
第 2部份的程式碼說明 :
這個部份就請參考維基百科的半正矢公式。
我也是照著公式計算的……不說明,當然就是因為我看不懂,公式直接套上去用的。
在回傳結果這裡,最後有 x1000,這是因為這個公式計算出來的數值是公里,乘以 1000之後,就變成公尺。
第 3部份的程式碼說明 :
當計算按鈕被點選的時候。
加入一個判斷式,先判斷變數_經度_固定和變數_緯度_固定這兩個值是不是 0,如果都不是 0的話,再呼叫距離計算公式來計算兩個的距離。
第 4部份的程式碼說明 :
當設定初始點按鈕被按下的時候。
把變數_經度_固定,設定成位置感測器當下的經度。
把變數_緯度_固定,設定成位置感測器當下的緯度。
再用標籤顯示出來。
這是為了方便判斷有沒有設定到初始點的位置,實際運用的時候是可以取消的。
第 5部份的程式碼說明 :
當位置感測器.位置變化,也就是手機有移動位置的時候。
把變數_經度_gps,設定成經度,也就是 gps位置感測器取到的當下的經度數值。
把變數_緯度_gps,設定成緯度,也就是 gps位置感測器取到的當下的緯度數值。
再用標籤顯示當下的 gps數值。
把標籤 5的文字,設定成距離計算公式,計算出來的結果。
這次的 aia檔的下載連結如下:
點我下載NO_114_Distance_on_two_point.aia
我在 line上有建立一個「APP INVENTOR 交流」的社群,如果有問題的話,大家也可以在這裡討論。人多力量大,大家可以互相的交流學習。
而且 line也很方便,有什麼問題截個圖看一下,會比文字說明來的清楚些,這也是比在網頁下方或是 youtube影片下方留言討論更方便的地方。
有興趣的朋友可以點擊連結加入,也可以掃描 QR code加入。
您已被邀請加入「APP INVENTOR 交流」!請點選以下連結加入社群!
https://line.me/ti/g2/Loxwrcc2iNRS5-Qd4SFXxQ?utm_source=invitation&utm_medium=link_copy&utm_campaign=default
參考書籍請見博客來書籍介紹頁面:
手機應用程式設計超簡單 App Inventor 2零基礎入門班
TQC+ 創意App程式設計認證指南
TQC+創意App程式設計認證指南解題秘笈
手機應用程式設計超簡單:App Inventor 2初學特訓班
手機應用程式設計超簡單:App Inventor 2小專題特訓班
手機應用程式設計超簡單:App Inventor 2資料庫專題特訓班
之前介紹過的一些 appinventor的使用記錄,都整理在下面這個頁面上了。
APP INVENTOR學習記錄及資源整理頁面