以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Places API for Android をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Places API for Android をアクティベートする
  3. 適切なキーを作成する
続ける

Place Picker

Place Picker UI ウィジェット

Place Picker は Google Places API for Android の一部として提供されるシンプルかつ柔軟な組み込みの UI ウィジェットです。

Place Picker の概要

PlacePicker には、地理的住所やローカル ビジネスに一致するプレイスを含むインタラクティブ マップや近隣のプレイスの一覧を表示する UI ダイアログが用意されています。ユーザーがプレイスを選択すると、アプリでそのプレイスの詳細を取得できます。

独自の UI ウィジェットを作成する上で、Place Picker には次のような利点があります。

  1. Google アプリやサードパーティ製の Place Picker を使用している他のアプリと同じ操作感を実現できる。つまり、アプリユーザーは既に Place Picker の使用方法に慣れ親しんでいることになる。
  2. マップは Place Picker に統合されている。
  3. アクセシビリティが組み込まれている。
  4. 開発期間を短縮できる。

Place Picker にはオートコンプリート機能があり、ユーザーが入力する検索キーワードに応じてプレイスの予測結果を表示します。この機能は、Place Picker との連携機能には必ず存在するため、オートコンプリートを有効にするために特に作業は必要ありません。オートコンプリートの詳細については、プレイスのオートコンプリートをご覧ください。

パーミッション

アプリで Place Picker を使用する場合は、ACCESS_FINE_LOCATION パーミッションを要求する必要があります。

Android 6.0 Marshmallow の新しいパーミッション モデル

Android 6.0 Marshmallow には、パーミッションを処理するための新しいモデルが導入されており、ユーザーがアプリをインストールやアップグレードする際のプロセスが効率化されています。バージョン 8.1 以降の Google Play サービスを使用している場合は、Android 6.0 Marshmallow SDK を対象とするようにアプリを設定して、新しいパーミッション モデルを使用することができます。

アプリが新しいパーミッション モデルに対応している場合、ユーザーはアプリをインストールまたはアップグレードする際にパーミッションを付与する必要はありません。その代わりに、アプリは実行時にパーミッションが必要な場合はパーミッションをリクエストします。これにより、パーミッションを要求するダイアログがユーザーに対して表示されます。

詳細については、Android 6.0 Marshmallow と、新しいパーミッション モデルに対応するために必要なアプリの変更に関するドキュメントをご覧ください。

Place Picker を追加する

Place Picker を起動するステップの概要は次のとおりです。

  1. PlacePicker.IntentBuilder() を使用して、Intent を構築します。
  2. Place Picker のデフォルトの動作を変更する場合は、ビルダーを使用して Place Picker に表示されるマップの初期の緯度と経度の範囲を設定できます。ビルダーで setLatLngBounds() を呼び出し、LatLngBounds を渡して初期の緯度と経度の範囲を設定します。これらの範囲は、「ビューポート」と呼ばれるエリアを定義します。デフォルトでは、ビューポートは端末の位置を中心にセットされ、都市ブロックにズームされた状態になります。
  3. startActivityForResult() を呼び出して、結果が返されたときにリクエストを識別できるようインテントと定義済みのリクエスト コードを渡します。

次のコード スニペットが Place Picker を起動します。

int PLACE_PICKER_REQUEST = 1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();

startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);

ユーザーがプレイスを選択すると、PlacePicker.getPlace() を呼び出してプレイスを取得できます。ユーザーがプレイスを選択していない場合、メソッドからは null が返されます。

また、マップの最新の範囲は、PlacePicker.getLatLngBounds() を呼び出して取得できます。

次のコード スニペットでは、ユーザーが選択したプレイスを取得します。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == PLACE_PICKER_REQUEST) {
    if (resultCode == RESULT_OK) {
        Place place = PlacePicker.getPlace(data, this);
        String toastMsg = String.format("Place: %s", place.getName());
        Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
    }
  }
}

マテリアル テーマを使用してカスタムの色を設定する

マテリアル テーマを使用してアプリケーションにカスタムの色を設定する場合、Place Picker はテーマから colorPrimary 属性と colorPrimaryDark 属性を継承します。これは、アプリと Place Picker 間でのブランド感を統一するのに役立ちます。

アプリに属性を表示する

アプリに Place Picker から取得した情報を表示する場合、アプリには属性も表示する必要があります。詳細については、属性をご覧ください。

フィードバックを送信...