2016年2月22日 星期一

在Android上用座標查詢地址原來這麼簡單!

無意間在StackOverFlow上逛到這篇文章...才知道原來這東西那麼好用!

簡單說:Android預設的物件GeoCoder(點擊可以轉到API)其實就可以幫設計師快速的把這個動作完成!

詭異的是我遲遲沒有找到相關的標準範例!結果原來是因為Google Guide教程中,關於「如何取得GPS座標」的部分已經轉換成使用GoogleApiClient,但後續取得地址的部分...雖然GoogleApiClient也有相關功能,可是在Google Guide中卻還是使用GoeCoder!

(只能說:習慣就好...)



這個物件設計讓我看了要說「好用」的原因...

第一,它直接使用座標,而不是相關系列的物件!

    List<Address> addresses = null;

    try {
        addresses = geocoder.getFromLocation(
                location.getLatitude(),
                location.getLongitude(),
                1);
    } catch (IOException ioException) {
        // Catch network or other I/O problems.
    } catch (IllegalArgumentException illegalArgumentException) {
    }

    
}
(其他時候,Google Guide的範例程式碼很繁雜!但這篇的卻是相較之下精簡,而我上面貼的這段是更精簡。因為這個功能並不需要多做無謂的說明...)


第二,承接第一點,這表示它不需要申請金鑰!在註冊功能上會省去很多手續。(但其實最新的Google Place API For Android在註冊上也很簡單!並沒有多複雜!)

第三,JavaScript的地址查詢API回傳的JSON資料結構非常複雜!

第四,跟Google Place API For Android相比,它可以完全適應自己設計的Thread。因為Google Place API需要使用CallBack,而且如果只是單純的地址查詢,Google Place API並不「精準」,會獲得很多無關的資訊。




補充說明:在Google Place API For Android中獲得PlaceID的方法。

其實就是額外使用JavaScriptAPI去獲得JSON資料而已!

目前這段功能顯然還未有完整物件化。