Current Place

プラットフォームを選択: Android iOS

Places SDK for Android を使用すると、 デバイスの現在報告されている位置情報。場所の例としては ビジネス、スポット、地理的位置などが含まれます

権限

ライブラリを使用するために、アプリのマニフェストで追加の権限を宣言する必要はありません。 ライブラリは、使用するすべての権限をマニフェストで宣言します。ただし、アプリで PlacesClient.findCurrentPlace() 実行時に位置情報の利用許可をリクエストする必要があります。

アプリで PlacesClient.findCurrentPlace() を使用していない場合は、 ACCESS_FINE_LOCATION 権限と ACCESS_COARSE_LOCATION 権限の導入 マニフェストに次の行を追加します。

<manifest ... xmlns:tools="http://schemas.android.com/tools">
    ...
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/>
    ...
</manifest>

<ph type="x-smartling-placeholder"></ph>について詳しく知る 権限の使用を検討してください。また、 EasyPermissions をご覧ください。

現在の場所を取得する

デバイスが現在設置されているローカル ビジネスや場所を探すため 次の手順を実施します

  1. ContextCompat.checkSelfPermission を呼び出す ユーザーがデバイスへのアクセスを許可しているかどうかを確認する あります。アプリには、ユーザーに許可を求めるコードも含める必要があります。 結果を処理します アプリの権限をリクエストするをご覧ください。 をご覧ください。
  2. FindCurrentPlaceRequest を作成します。 Place.FieldList を渡します。その際、 アプリがリクエストするデータ型を配置します。
  3. PlacesClient.findCurrentPlace() を呼び出します。 前のステップで作成した FindCurrentPlaceRequest を渡します。 示します。
  4. PlaceLikelihood のリストを FindCurrentPlaceResponse

フィールドは Place Search の結果に対応しており、次の 3 つの請求カテゴリに分けられます。 Basic、Contact、Atmosphere です。基本フィールドは基本レートで課金され、追加の費用は発生しません 料金。Contact フィールドと Atmosphere フィールドはより高いレートで課金されます。詳細情報 プレイス データ リクエストの課金の仕組みについて詳しくは、 使用量と請求額

API は FindCurrentPlaceResponse TaskFindCurrentPlaceResponse には、リソースのリストと PlaceLikelihood デバイスがある可能性が高い場所を表すオブジェクトです。対象 結果には、ユーザーが実際に訪れた場所、 場所が正しいことがわかります。既知の場所が存在しない場合は、リストが空になることがあります。 自動的に適用されます。

PlaceLikelihood.getPlace() 取得して Place オブジェクト、 PlaceLikelihood.getLikelihood() 場所の可能性評価を取得できます。値が大きいほど、 その場所が最適であるという確率です

次のコードサンプルでは、デバイスがある場所のリストを取得します。 各場所の名前と可能性を記録します。

Kotlin



// Use fields to define the data types to return.
val placeFields: List<Place.Field> = listOf(Place.Field.NAME)

// Use the builder to create a FindCurrentPlaceRequest.
val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields)

// Call findCurrentPlace and handle the response (first check that the user has granted permission).
if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) ==
    PackageManager.PERMISSION_GRANTED) {

    val placeResponse = placesClient.findCurrentPlace(request)
    placeResponse.addOnCompleteListener { task ->
        if (task.isSuccessful) {
            val response = task.result
            for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) {
                Log.i(
                    TAG,
                    "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}"
                )
            }
        } else {
            val exception = task.exception
            if (exception is ApiException) {
                Log.e(TAG, "Place not found: ${exception.statusCode}")
            }
        }
    }
} else {
    // A local method to request required permissions;
    // See https://developer.android.com/training/permissions/requesting
    getLocationPermission()
}

      

Java


// Use fields to define the data types to return.
List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME);

// Use the builder to create a FindCurrentPlaceRequest.
FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields);

// Call findCurrentPlace and handle the response (first check that the user has granted permission).
if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request);
    placeResponse.addOnCompleteListener(task -> {
        if (task.isSuccessful()){
            FindCurrentPlaceResponse response = task.getResult();
            for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) {
                Log.i(TAG, String.format("Place '%s' has likelihood: %f",
                    placeLikelihood.getPlace().getName(),
                    placeLikelihood.getLikelihood()));
            }
        } else {
            Exception exception = task.getException();
            if (exception instanceof ApiException) {
                ApiException apiException = (ApiException) exception;
                Log.e(TAG, "Place not found: " + apiException.getStatusCode());
            }
        }
    });
} else {
    // A local method to request required permissions;
    // See https://developer.android.com/training/permissions/requesting
    getLocationPermission();
}

      

Likelihood 値について:

  • 可能性は相対確率を 返された場所のリストの中で、最も一致する場所を示す 単一リクエスト。異なるリクエスト間で可能性を比較することはできません。
  • 可能性の値は 0.0 ~ 1.0 の間になります。

たとえば、正しい場所が「場所」である確率が 55% である場合、 35% の確率で場所 B です 場所 A の確率は 0.55、場所 B の確率は 0.35 です。

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

アプリに属性を表示する

以下から取得した情報をアプリが表示するタイミング PlacesClient.findCurrentPlace() アプリは属性も表示する必要があります。詳しくは、次のドキュメントをご覧ください: アトリビューション