close

Delphi XE 版本後,為了(也必須)貼近符合 mobile 的開發需要,所以陸續新增了以前在 Windows 環境所沒有的元件,Location Sensor 就是其中一個,mobile 環境中當然不只有這一個Sensor,其他包含 MotionSensor、OrientationSensor、LightSensor、EnvironmentalSensor、MechanicalSensor、ElectricalSensor、BiometricSensor、ScannerSensor 這幾個,不過元件盤中,只看的到 Location Sensor、MotionSensor 與 OrientationSensor

這次要介紹的是 Location Sensor,顧名思義,就是透過 Location Sensor 可以得到目前所在地的經緯度資料,用法很簡單,新增一個專案後,再新增兩個 TButton、數個 TLabel 與一個 TLocationSensor,如下圖

接下來,在取得經緯度的 Button(btnActiveSensor) 以及 LocationSensor1 的 LocationChanged 這個 event,分別撰寫如下程式碼

然後因為這次會用到 mobile 的 GPS 來定位,所以需要開啟相關「權限」(permissions),如何開啟呢?很簡單,只需要點選 Menu 上的 Project->Options

然後切換到 Uses Permissions,確認 Access fin location 與 Access location extra commands 兩個選項是 True

執行看看吧

接下來準備將經緯度做地址轉換,怎麼做呢?其實很簡單,這部分 Google 大師都已經幫我們準備好 web api,只要照著呼叫就可以嚕,格式如下(可以先於瀏覽器中先鍵入看看結果)

注意是緯度在前,經度在後,執行結果是回傳 Json 格式的資料,像這樣

如果將這個 URL 輸入到上篇提到的 RESTDebugger 工具中的話,可以得到類似結果

可是當切換到 Tabular Data 這個頁籤的時候,並沒有得到預期的「資料集」,只有一個 OK...why?

主要是因為每個回傳 Json 內容格式不盡相同的關係,這時候需要在 JSON Root Element 欄位輸入「results」,按下 Apply,告知要從 results 這個 Element 開始取資料,再次切換到 Tabular Data 頁籤的時候,就會得到你比較想要的資料格式...

不過瀏覽器上得到資料是一回事,那手機上怎麼辦?其實粉簡單,一樣是上篇提過的那些元件,TRESTClient、TRESTRequest、TRESTResponse、TRESTResponseDataSetAdapter...,所以怎麼顯示到 labAddr 上就不用我現醜了吧,留給大家自己玩玩…。

可以正常執行的話,會得到如下畫面

 

最後有一點要特別提出來的,就是使用 Google web api 在地址解析的部分,每天每個 IP 只能呼叫最多 2,500 次,而且每次最好間隔 1~2 秒,否則該 Request 可能會被 Google 拒絕甚至永遠封鎖。原廠說明可參閱下述 URL

https://developers.google.com/maps/articles/geocodestrat?hl=zh-tw

摘錄其中重點

 

 

to be continued...

arrow
arrow
    創作者介紹
    創作者 縹緲 的頭像
    縹緲

    縹緲's blog

    縹緲 發表在 痞客邦 留言(6) 人氣()