我相信有看過本團隊於2012年出版的 Android手機程式超簡單-App Inventor入門卷 的朋友,對這個題目一定不陌生,加上鄉親朋友對本系列書籍的支持,讓這本書在銷售上有不錯的成績。也因此本團隊針對許多朋友對該書籍提出的建議以及小錯誤進行整理並修改,其中在使用LocationSensor定位的範例程式主要是由我-偉民老師負責,最近本人也針對此範例的距離計算失準問題進行修改。
在使用Google大神多次搜尋下,發現計算兩點經緯度的最短距離不再是使用畢氏定理這麼簡單,主要原因是經緯度的計算不是平面座標而是球面座標。在兩點經緯度已知的情況下,過去有學者提出兩種不同的方法來計算兩點的最短距離,分別是:
1. Great Circle Distance Method
http://en.wikipedia.org/wiki/Great-circle_distance
2. Haversine Method
http://en.wikipedia.org/wiki/Haversine_formula
本人主要是以Great Circle Distance Method為主進行程式的撰寫,該方法公式如下:
d = R x arccos(sin(a1)sin(a2)+cos(a1)cos(a2)cos(b2-b1))
其中d為兩點最短距離,R為地球半徑=6371Km,(a1,b1)和(a2,b2)為兩地經緯度,a為緯度,b為經度。
剛好本人最近有時間可以趴趴走,因此每到一個地方就用這個新程式進行測試,下圖是在永和成功路一段的位置進行的測試結果。之後本人會將修改完成的最終版程式上傳至App Inventor中文學習網(http://www.appinventor.tw/)的檔案庫中供大家下載測試,檔名為LocationSensorVer2,也請大家將測試的結果留言分享給我知道。
