Current Place

Plattform auswählen: Android iOS

Mit dem Places SDK for Android können Sie den Ort auf der den aktuell gemeldeten Standort des Geräts. Beispiele für Orte: Unternehmen, POIs und geografische Standorte.

Berechtigungen

Wenn du die Bibliothek verwenden möchtest, musst du keine zusätzlichen Berechtigungen im Manifest deiner App deklarieren. da die Bibliothek alle verwendeten Berechtigungen in ihrem Manifest deklariert. Wenn Ihre App jedoch PlacesClient.findCurrentPlace(), müssen Sie zur Laufzeit Berechtigungen zur Standortermittlung anfordern.

Wenn deine App „PlacesClient.findCurrentPlace()“ nicht verwendet, entferne die ACCESS_FINE_LOCATION- und ACCESS_COARSE_LOCATION-Berechtigungen eingeführt der Bibliothek hinzugefügt, indem du Folgendes zu deinem Manifest hinzufügst:

<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>

Weitere Informationen zu Berechtigungen und erwägen Sie, EasyPermissions, um loszulegen.

Aktuellen Standort anfordern

Um das lokale Unternehmen oder einen anderen Ort zu finden, an dem sich das Gerät gerade befindet Gehen Sie folgendermaßen vor:

  1. ContextCompat.checkSelfPermission anrufen Um zu prüfen, ob der Nutzer die Berechtigung für den Zugriff auf sein Gerät erteilt hat Standort. Ihre App muss außerdem Code enthalten, der den Nutzer um die Berechtigung bittet, und das Ergebnis zu verarbeiten. Siehe App-Berechtigungen anfordern .
  2. Erstellen Sie ein FindCurrentPlaceRequest, übergibt List von Place.Fields und gibt die Ortsdatentypen, die Ihre App anfordern soll.
  3. Rufen Sie uns unter PlacesClient.findCurrentPlace() an. übergeben Sie die FindCurrentPlaceRequest, die Sie im vorherigen Schritt Schritt.
  4. Die Liste der PlaceLikelihood findest du in der FindCurrentPlaceResponse

Die Felder entsprechen Place Search-Ergebnissen und sind in drei Abrechnungskategorien unterteilt: Basic, Contact und Atmosphere. Für Felder der Kategorie „Basic“ gilt der Basispreis und es fallen keine zusätzlichen Kosten an Gebühren. Für Felder der Kategorie „Contact“ und „Atmosphere“ werden höhere Kosten abgerechnet. Weitere Informationen zur Abrechnung von „Place Data“-Anfragen finden Sie unter Nutzung und Abrechnung.

Die API gibt eine FindCurrentPlaceResponse in einem Task FindCurrentPlaceResponse enthält eine Liste mit PlaceLikelihood -Objekte, die Orte darstellen, an denen sich das Gerät wahrscheinlich befinden wird. Für enthält das Ergebnis einen Hinweis darauf, wie wahrscheinlich es ist, ist der richtige Ort. Wenn kein Ort bekannt ist, ist die Liste möglicherweise leer die dem angegebenen Gerätestandort entsprechen.

Sie können PlaceLikelihood.getPlace() um eine Place -Objekt und PlaceLikelihood.getLikelihood() um die Wahrscheinlichkeitsbewertung des Orts zu erhalten. Ein höherer Wert bedeutet eine höhere Wahrscheinlichkeit, dass der Ort am besten passt.

Im folgenden Codebeispiel wird die Liste der Orte abgerufen, an denen sich das Gerät befindet am wahrscheinlichsten gefunden werden, und protokolliert den Namen und die Wahrscheinlichkeit für jeden Ort.

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();
}

      

Anmerkungen zu den Wahrscheinlichkeitswerten

  • Die Wahrscheinlichkeit liefert eine relative Wahrscheinlichkeit. des Ortes, der in der Liste der zurückgegebenen Orte für einen -Einzelanfrage. Es ist nicht möglich, Wahrscheinlichkeiten verschiedener Anfragen zu vergleichen.
  • Der Wert der Wahrscheinlichkeit liegt zwischen 0,0 und 1,0.

Um beispielsweise mit einer Wahrscheinlichkeit von 55% darzustellen, dass der richtige Ort „Place“ ist, A und eine Wahrscheinlichkeit von 35 %, dass es sich um Ort B handelt, hat die Antwort zwei Mitglieder, Ort A mit einer Wahrscheinlichkeit von 0,55 und Ort B mit einer Wahrscheinlichkeit von 0,35.

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

Zuordnungen in der App anzeigen

Wenn Ihre App Informationen anzeigt, die von PlacesClient.findCurrentPlace(), muss die App Quellenangaben anzeigen. Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.