其實 google 有提供 API 給各個平台來做串接的動作
在使用之前我們仍然需要取得憑證簽署 API 金鑰。這個部分官方寫得很詳盡我們直接看即可。
簽署與 API 金鑰
除此資外我們要在 Google Developers Console 申請 Google Places API for Android 的使用權限。這個 API 是有配額的 一天只能接受 1,000 次的查詢,如果是已經綁定信用卡的話可以增加到 150,000 次查詢。接下來應該就是要付費了吧。
開始進入正題:
這篇我們先來一個超簡單的:PlacePicker 他是經由 Intent 動作就可以呼叫的,連 UI 都不用我們自己建立。當我們呼叫後就會自動進入下面這個畫面:包含了地圖,現在位置,周邊店家 通通都有了
AndroidManifest.xml
增加 ACCESS_FINE_LOCATION 權限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Activity上建立進入地圖的動作:
private static final int REQUEST_PLACE_PICKER = 1; PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); Intent intent; try { intent = intentBuilder.build(StoreAdd.this); startActivityForResult(intent, REQUEST_PLACE_PICKER); } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) { e.printStackTrace(); }
Activity上建立回傳資料後的動作:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_PLACE_PICKER){ if (resultCode == RESULT_OK){ Place place = PlacePicker.getPlace(data, this); Log.e("place", place.toString()); } } }
如此一來當使用者點選地圖頁面上面的地點名稱後,就會回傳該地點的資料到 onActivityResult 的 Log.e 裡面。
雖然這個作法做起來超快速,但是卻不是 google 最推薦的做法。根據 google 文件上面的說法。如果我們只是要取得資料,沒有打算讓使用者在我們的 APP 上面直接建立資料給 google 其實使用 http 的 web-service 就可以摟!不過這樣的話 UI 就要很辛苦的自己做摟。
請問V2 跟place的差別是在於
回覆刪除place有UI跟內建圖資
V2算是開發自己需要的地圖
是這樣來分別嗎?
老實說我沒有用過 v2喔抱歉
刪除intent = intentBuilder.build(StoreAdd.this);
回覆刪除請問我在執行APP的時候StoreAdd一直被顯示紅字錯誤該如何解決呢?