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:
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 .- Erstellen Sie ein
FindCurrentPlaceRequest
, übergibtList
vonPlace.Field
s und gibt die Ortsdatentypen, die Ihre App anfordern soll. - Rufen Sie uns unter
PlacesClient.findCurrentPlace()
an. übergeben Sie dieFindCurrentPlaceRequest
, die Sie im vorherigen Schritt Schritt. - Die Liste der
PlaceLikelihood
findest du in derFindCurrentPlaceResponse
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.