Place Details

プラットフォームを選択: Android iOS JavaScript ウェブサービス

Places SDK for Android はアプリに豊富な情報を提供 場所に関する情報(場所の名前や住所、 緯度と経度の座標で指定された場所、場所のタイプ( ナイトクラブ、ペットショップ、美術館など)。特定の期間にこの情報にアクセスするには、 固定の識別子であるプレイス ID を使用して 場所を特定します。

場所の詳細

Place オブジェクトは特定の場所に関する情報を提供します。こちらの Place 次のように指定できます。

場所をリクエストするときは、返す場所データを指定する必要があります。そのためには、引数のリストを 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_OFFSETPlace.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.
    }
});

      
<ph type="x-smartling-placeholder">

営業状況を確認する

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 の概要をご覧ください。