在 Android 上加上搜尋地理位置的功能 Google Places API (地方資訊挑選器 PlacePicker )
這篇我們有提到, PlacesPicker 雖然方便但是有使用上的限制,其實 1,000 次的使用量可是一下子就用完了呢!所以官方也推薦我們直接用 JavaScript 的 API 或是 http 的 API 來使用。
這些也都是有使用限制的,不過 http 的限制額度是算在使用者自己的額度上而不是以我們的 APP 來計算所以相對非常足夠。
API 文件連結
首先我們仍然是要去申請一支api金鑰 (因為和 Android 使用的不同權限所以要另外申請喔)
接著就是重頭戲了:api 輸入和輸出的值就不解釋了,請看官方文件,有超清楚的中文範例。
要注意的有幾點:
- 這個 API 只有接受 HTTP GET 不接受 POST
- 經緯度是必填所以在呼叫這支 API 前要搭配 Android 取得經緯度範例 服用
下面是範例:
public class SearchPoi extends AppCompatActivity { AQuery aQuery = new AQuery(this); private static final String TAG = "LocationActivity"; GPSTracker gps; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // 宣告使用 GPSTracker gps = new GPSTracker(this); if(gps.canGetLocation()){ //取得經緯度 double latitude = gps.getLatitude(); double longitude = gps.getLongitude(); //設定API String ListApi = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?key="+getString(R.string.web_api_key)+"&radius=500&location=" + latitude +","+ longitude; // 呼叫 API aQuery.ajax(ListApi, null, JSONObject.class, new AjaxCallback() { @Override public void callback(String url, JSONObject object, AjaxStatus status) { super.callback(url, object, status); System.out.println("===url===" + url); System.out.println("==obj==" + object); System.out.println("=status=" + status); try { //取得地理位置名稱 for(int i = 0;i<=object.getJSONArray("results").length();i++){ Log.e("results name",object.getJSONArray("results").getJSONObject(i).getString("name")); } } catch (JSONException e) { e.printStackTrace(); } } }); }else{ Toast.makeText(this,"error",Toast.LENGTH_SHORT).show(); } } }
沒有留言:
張貼留言