以上で完了です。

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

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

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

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

プレイスの追加

Google Places API for Android を使用して、Google プレイスのデータベースにプレイスを追加できます。新たに追加したプレイスはすぐにアプリに表示され、Google プレイスのデータベースと Google マップのモデレーション キューに追加候補として追加されます。

  1. プレイスを追加する
  2. 複数のプレイス ID とプレイス ID スコーピングの扱い

プレイスを追加する

プレイスを追加するには、GeoDataApi.addPlace() を呼び出して、追加するプレイスの詳細を指定する AddPlaceRequest オブジェクトを渡します。

AddPlaceRequest を作成する際は、次の情報を含めます。

  • 必須:ビジネス、有名なスポット、その他のプレイスの name の完全なテキスト。255 文字以内で指定します。
  • 必須:プレイスの位置を指定する LatLng オブジェクト。
  • 必須:人間が読み取れる形式でのプレイスの address。プレイスに人間が読み取れる整形式の住所が含まれていると、モデレーション プロセスで承認され Google プレイスのデータベースに追加される可能性が高まります。
  • 必須:このプレイスの特性を示すプレイスタイプの一覧。利用可能なプレイスタイプの一覧については、プレイスタイプのドキュメントと Place インターフェースで定義されている定数をご覧ください。
  • 任意:プレイスの phoneNumber。この電話番号は国際形式になります。国際形式では、「+」記号と国コードが先頭に付きます。たとえば、Google の米国、マウンテン ビュー オフィスの電話番号の国際形式は +1 650-253-0000 です。プレイスに整形式の電話番号が含まれていると、モデレーション プロセスで承認され Google プレイスのデータベースに追加される可能性が高まります。注: phoneNumberUri のいずれか、または両方を指定する必要があります。
  • 任意:会社のホームページなど、このプレイスの公式ウェブサイトのアドレスが含まれる Uri オブジェクト。プレイスに整形式のウェブサイト アドレスが含まれていると、モデレーション プロセスで承認され Google プレイスのデータベースに追加される可能性が高まります。注: phoneNumberUri のいずれか、または両方を指定する必要があります。

API が PendingResultPlaceBuffer を返します。PlaceBuffer には追加されたプレイスが含まれています。

作成された Place オブジェクトには固有のプレイス ID が付けられ、その後アプリでその ID を使用してプレイスの詳細を取得できます。追加されたプレイスは、アプリで開始する get-current-place のリクエストの結果にすぐに表示され、アプリで表示される Place Picker でも使用可能になります。スコーピングは API キーの生成に使用されたプロジェクト ID によって決められます。

新たに追加されたプレイスは、モデレーション キューに登録され、Google プレイスのデータベースへの追加の審査に入ります。モデレーション プロセスで承認されなかったプレイスも、送信元のアプリのプレイス ID 経由で引き続き取得できますが、get-current-place リクエストの結果、API Picker、その他の API メソッドには表示されなくなります。モデレーション プロセスで承認されたプレイスは、すべてのアプリと Google マップ上に表示されます。

新しいプレイスを、モデレーション プロセスで承認されやすいようにして Google プレイスのデータベースに確実に追加されるようにするには、追加リクエストにできるだけ多くの情報を含める必要があります。特に、住所、電話番号、ウェブサイトが重要です。

次のコードサンプルでは、オーストラリア東海岸マンリー付近の野生生物保護区域を追加します。

AddPlaceRequest place =
    new AddPlaceRequest(
        "Manly Sea Life Sanctuary", // Name
        new LatLng(-33.7991, 151.2813), // Latitude and longitude
        "W Esplanade, Manly NSW 2095", // Address
        Collections.singletonList(Place.TYPE_AQUARIUM), // Place types
        "+61 1800 199 742", // Phone number
        Uri.parse("http://www.manlysealifesanctuary.com.au/") // Website
    );

Places.GeoDataApi.addPlace(mGoogleApiClient, place)
    .setResultCallback(new ResultCallback<PlaceBuffer>() {
        @Override
        public void onResult(PlaceBuffer places) {
            Log.i(TAG, "Place add result: " + places.getStatus().toString());
            Log.i(TAG, "Added place: " + places.get(0).getName().toString());
            places.release();
        }
    });

複数のプレイス ID とプレイス ID スコーピングの扱い

1 つのプレイス ID で参照できるのは 1 つのプレイスのみですが、1 つのプレイスが複数のプレイス ID を持つこともあります。1 つのプレイスで複数の ID を扱うケースとして最も多いのは、最初に自身のアプリケーションのみにスコープを限定したプレイスを追加した後で、そのプレイスが Google 全体をスコープする場合です。

プレイスを追加すると、追加した新しいプレイスのプレイス ID はすぐに受け取ることができます。このプレイス ID のスコープは、自分のアプリのみになります。その後、このプレイスは、モデレーション キューに登録され、Google プレイスのデータベースへの追加のための承認を待ちます。承認されると、プレイスは新しいプレイス ID を受け取り、すべてのアプリや Google マップで利用できるようになります。

プレイス ID を指定してプレイスをリクエストする場合、そのプレイスが変わらず存在している限り、レスポンスで常に同じ場所を受け取ると考えられます。

ただし、レスポンスにはリクエストで使用したプレイス ID と異なるプレイス ID が含まれることがあります。詳細については、プレイス ID の概要をご覧ください。

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