Places SDK for Android はアプリに豊富な情報を提供 場所に関する情報(場所の名前や住所、 緯度と経度の座標で指定された場所、場所のタイプ( ナイトクラブ、ペットショップ、美術館など)。特定の期間にこの情報にアクセスするには、 固定の識別子であるプレイス ID を使用して 場所を特定します。
場所の詳細
「
Place
オブジェクトは特定の場所に関する情報を提供します。こちらの
Place
次のように指定できます。
- 発信
PlacesClient.fetchPlace()
詳しくは、 ID で場所を取得する。 - 発信
PlacesClient.findCurrentPlace()
詳しくは、 現在の場所を取得する。
場所をリクエストするときは、返す場所データを指定する必要があります。そのためには、引数のリストを Place.Field 返すデータを指定する値。このリストは重要な考慮事項です。 リクエストごとの費用が発生します。
プレイスデータの結果を空にすることはできないため、データのあるプレイスの結果のみ
返されます(たとえば、リクエストされた場所に写真がない場合、photos
フィールドは結果には含まれません)。
次の例では、3 つのテーブルを含む Place.Field 値 リクエストによって返されるデータを指定できます。
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
Java
// Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
プレイス オブジェクトのデータ フィールドにアクセスする
Place
オブジェクトを取得したら、そのオブジェクトのメソッドを使用して
リクエストで指定されたデータ フィールド。Place
オブジェクトにこのフィールドがない場合、
関連メソッドが null を返す。以下に、利用可能な方法の例をいくつか示します。
すべての方法の完全なリストについては、
Place
API リファレンス。
getAddress()
– 人が読める形式の場所の住所。 使用できます。getAddressComponents()
~List
住所コンポーネントのリストを取得します。これらのコンポーネントは、Terraform ワークフローの 情報を得るために、場所の住所に関する構造化された情報を抽出することを 場所がある都市を検索する例ですこれらは使用しないでください 住所の書式設定のためのコンポーネント代わりにgetAddress()
を呼び出します。 ローカライズされた住所を提供します。getId()
– 場所のテキスト識別子。読む プレイス ID については、後ほど詳しく説明します。getLatLng()
– 場所の地理的位置。 緯度と経度の座標で指定されます。getName()
- 場所の名前。getOpeningHours()
–OpeningHours
移動しますOpeningHours.getWeekdayText()
を呼び出すと、 各日の営業時間と営業時間を表す文字列のリスト できます。OpeningHours.getPeriods()
を呼び出してリストを返す より詳細な情報を含むperiod
オブジェクトgetWeekdayText()
で提供されるデータと同等です。Place
オブジェクトには、getCurrentOpeningHours()
今後 7 日間の場所の営業時間を返すメソッドです。getSecondaryOpeningHours()
これにより、ある場所の今後 7 日間の第 2 の営業時間が返されます。isOpen()
– 場所が以下かどうかを示すブール値 。時間が指定されていない場合、デフォルトは現在です。isOpen
Place.Field.UTC_OFFSET
とPlace.Field.OPENING_HOURS
は使用可能です。精度を高めるためにPlace.Field.BUSINESS_STATUS
をリクエストし、Place.Field.UTC_OFFSET
フィールドを返します。 リクエストがない場合は、営業しているとみなされます。 使用方法については、こちらの動画をご覧ください。 Place Details を含むisOpen
。
簡単な例:
Kotlin
val name = place.name val address = place.address val location = place.latLng
Java
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
ID でプレイスを取得する
プレイス ID は、場所を一意に識別するテキスト表記の ID です。イン
場合、次のように呼び出して場所の ID を取得できます。
Place.getId()
。
「
Place Autocomplete サービス
指定した検索クエリに一致する各プレイスのプレイス ID も返します。
フィルタします。プレイス ID を保存して、その ID を使用して
Place
後ほど説明します。
ID で場所を取得するには、次の呼び出しを呼び出します。
PlacesClient.fetchPlace()
FetchPlaceRequest
を渡します。
API は
FetchPlaceResponse
Task
。
「
FetchPlaceResponse
次を含む
Place
オブジェクトを返します。
次のコード例は、fetchPlace()
を呼び出して
指定した場所の詳細情報を取得できます。
Kotlin
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify the fields to return. val placeFields = listOf(Place.Field.ID, Place.Field.NAME) // Construct a request object, passing the place ID and fields array. val request = FetchPlaceRequest.newInstance(placeId, placeFields) placesClient.fetchPlace(request) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}") }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.message}") val statusCode = exception.statusCode TODO("Handle error with given status code") } }
Java
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Construct a request object, passing the place ID and fields array. final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); placesClient.fetchPlace(request).addOnSuccessListener((response) -> { Place place = response.getPlace(); Log.i(TAG, "Place found: " + place.getName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } });
営業状況を確認する
PlacesClient.isOpen(IsOpenRequest request)
メソッドは、場所が以下にあるかどうかを示す IsOpenResponse
オブジェクトを返します。
指定した時間に基づいて、現在の営業状況が示されます。
このメソッドは、以下を含む IsOpenRequest
型の単一の引数を取ります。
Place
オブジェクト、またはプレイス ID を指定する文字列です。- 1970-01-01T00:00:00Z からの時間をミリ秒単位で指定するオプションの時刻値。時間が指定されていない場合、デフォルトは現在です。
このメソッドを使用するには、次のフィールドが Place
オブジェクトに存在する必要があります。
Place.Field.BUSINESS_STATUS
Place.Field.CURRENT_OPENING_HOURS
Place.Field.OPENING_HOURS
Place.Field.UTC_OFFSET
これらのフィールドが Place
オブジェクトで提供されていない場合や、プレイス ID を渡した場合は、
このメソッドは、
PlacesClient.fetchPlace()
取得します。必要なフィールドを使用してプレイス オブジェクトを作成する方法について詳しくは、
Place Details をご覧ください。
次の例では、場所が現在営業中かどうかを判断します。この例では、Python から
プレイス ID を isOpen()
にマッピングします。
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" val request: IsOpenRequest = try { IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request) isOpenTask.addOnSuccessListener { response -> val isOpen = response.isOpen } // ...
Java
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest); placeTask.addOnSuccessListener( (response) -> isOpen = response.isOpen()); // ...
次の例では、isOpen()
を呼び出して Place
オブジェクトを渡します。
Place
オブジェクトには、有効なプレイス ID を含める必要があります。
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() var place: Place val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" // Specify the required fields for an isOpen request. val placeFields: List<Place.Field> = listOf( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET ) val placeRequest: FetchPlaceRequest = FetchPlaceRequest.newInstance(placeId, placeFields) val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest) placeTask.addOnSuccessListener { placeResponse -> place = placeResponse.place val isOpenRequest: IsOpenRequest = try { IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return@addOnSuccessListener } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest) isOpenTask.addOnSuccessListener { isOpenResponse -> val isOpen = isOpenResponse.isOpen } // ... } // ...
Java
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; // Specify the required fields for an isOpen request. List<Place.Field> placeFields = new ArrayList<>(Arrays.asList( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET )); FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request); placeTask.addOnSuccessListener( (placeResponse) -> { Place place = placeResponse.getPlace(); IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest); isOpenTask.addOnSuccessListener( (isOpenResponse) -> isOpen = isOpenResponse.isOpen()); // ... }); // ...
アプリに属性を表示する
アプリで場所に関するクチコミなどの場所情報を表示する場合、 すべての属性が含まれます。詳細については、次をご覧ください: アトリビューション。
プレイス ID について
Places SDK for Android で使用されるプレイス ID は同じ識別子です。 Places API 内で使用。 1 つのプレイス ID が参照できる場所は 1 つのみですが、1 つの場所に複数の場所を指定できます 組み合わせることもできます他にも、なんらかの理由で場所が変更になった場合、 取得する必要がありますたとえば、会社が新しい場所に移転した場合などに発生する可能性があります。 あります。
プレイス ID を指定して場所をリクエストすると、 レスポンスでは常に同じ場所が返されます(その場所が あります)。ただし、レスポンスには、「.」で始まるプレイス ID が含まれる場合があります。 リクエスト内のものとは異なります
詳しくは、 プレイス ID の概要をご覧ください。