Das Places SDK for Android stellt Ihrer App umfangreiche Informationen zur Verfügung. zu Orten, einschließlich Name und Adresse des Orts, der geografischen Standort (Breiten-/Längengradkoordinaten), die Art des Ortes (z. B. wie Nachtclub, Tierhandlung, Museum) usw. Um auf diese Informationen für einen bestimmten Ort gefunden haben, können Sie die Orts-ID verwenden. Dies ist eine stabile Kennung, die einen Ort identifiziert.
Ortsdetails
Die
Place
-Objekt liefert Informationen zu einem bestimmten Ort. Sie können sich eine
Place
auf folgende Weise verwenden:
- Anruf
PlacesClient.fetchPlace()
– Weitere Informationen finden Sie im Leitfaden zur Ort nach ID abrufen. - Anruf
PlacesClient.findCurrentPlace()
– Weitere Informationen finden Sie im Leitfaden zur den aktuellen Ort abrufen.
Wenn Sie einen Ort anfragen, müssen Sie angeben, welche Ortsdaten zurückgegeben werden sollen. Dazu übergeben Sie eine Liste mit Place.Field -Werte angeben, welche Daten zurückgegeben werden sollen. Diese Liste ist wichtig, da sie sich auf die Kosten pro Anfrage.
Da „Place Data“-Ergebnisse nicht leer sein dürfen, werden nur Ortsergebnisse mit Daten
zurückgegeben (wenn z. B. ein angefragter Ort keine Fotos hat, wird der photos
-Wert
nicht im Ergebnis vorhanden.
Im folgenden Beispiel werden drei Place.Field-Werte , um die von einer Anfrage zurückgegebenen Daten anzugeben:
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);
Auf Felder für „Place“-Objektdaten zugreifen
Nachdem Sie das Place
-Objekt abgerufen haben, verwenden Sie die Methoden des Objekts, um auf die
Datenfelder, die in der Anfrage angegeben sind. Wenn das Feld im Place
-Objekt fehlt,
Die zugehörige Methode gibt null zurück. Im Folgenden finden Sie Beispiele für einige der verfügbaren Methoden.
Eine vollständige Liste aller Methoden finden Sie in der
Place
API-Referenz
getAddress()
: Die Adresse des Orts in visuell lesbarer Form Format.getAddressComponents()
bisList
von Adresskomponenten für diesen Ort. Diese Komponenten werden für die zum Extrahieren strukturierter Informationen zur Adresse eines Ortes, z. B. nach der Stadt, in der sich ein Ort befindet. Nicht verwenden Komponenten für die Adressformatierung; rufen Sie stattdessengetAddress()
an, mit einer lokalisierten Adresse.getId()
: Die Kennung des Orts in Textform. Gelesen über Orts-IDs.getLatLng()
: der geografische Standort des Orts als Breiten- und Längengrade angegeben.getName()
: Der Name des Ortes.getOpeningHours()
–OpeningHours
des Ortes. Rufen SieOpeningHours.getWeekdayText()
auf, um eine Liste der Zeichenfolgen, die die Öffnungs- und Schließzeiten für jeden Tag des in der Woche. Rufen SieOpeningHours.getPeriods()
auf, um eine Liste mitperiod
-Objekte mit detaillierteren Informationen, die entspricht den vongetWeekdayText()
bereitgestellten Daten.Das
Place
-Objekt enthält außerdem den ParametergetCurrentOpeningHours()
, die die Öffnungszeiten eines Orts in den nächsten sieben Tagen zurückgibt.getSecondaryOpeningHours()
gibt die sekundären Öffnungszeiten eines Orts für die nächsten sieben Tage zurück.isOpen()
: Ein boolescher Wert, der angibt, ob der Ort derzeit geöffnet ist. Wenn keine Uhrzeit angegeben ist, wird die Standardeinstellung „jetzt“ verwendet.isOpen
wird nur zurückgegeben, wenn sowohlPlace.Field.UTC_OFFSET
als auchPlace.Field.OPENING_HOURS
sind verfügbar. Um die Korrektheit der fordern Sie diePlace.Field.BUSINESS_STATUS
- undPlace.Field.UTC_OFFSET
Felder in Ihrer ursprünglichen Ortsanfrage. Wird keine Anfrage gestellt, wird davon ausgegangen, dass das Unternehmen betriebsbereit ist. Sehen Sie sich dieses Video zur Verwendung vonisOpen
mit Place Details.
Einige einfache Beispiele:
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();
Ort nach ID anfordern
Die Orts-ID ist eine Kennung in Textform, die einen Ort eindeutig definiert. In
des Places SDK for Android können Sie die ID eines Orts abrufen, indem Sie
Place.getId()
Die
Place Autocomplete-Dienst
gibt auch eine Orts-ID für jeden Ort zurück, der der eingegebenen Suchanfrage entspricht.
und Filter. Sie können die Orts-ID speichern und zum Abrufen der
Place
-Objekt zu erstellen.
Um einen Ort anhand der ID zu erhalten, rufen Sie
PlacesClient.fetchPlace()
,
Übergeben Sie ein FetchPlaceRequest
-Objekt.
Die API gibt eine
FetchPlaceResponse
in einem
Task
Die
FetchPlaceResponse
enthält
Place
-Objekt, das der angegebenen Orts-ID entspricht.
Im folgenden Codebeispiel wird gezeigt, wie fetchPlace()
aufgerufen wird, um
Details zum angegebenen Ort abrufen
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. } });
Geöffnet-Status abrufen
Die PlacesClient.isOpen(IsOpenRequest request)
gibt ein IsOpenResponse
-Objekt zurück, das angibt, ob der Ort
basierend auf der im Anruf angegebenen Zeit geöffnet.
Diese Methode verwendet ein einzelnes Argument vom Typ IsOpenRequest
, das Folgendes enthält:
Place
-Objekt oder einen String zur Angabe einer Orts-ID enthält.- Ein optionaler Zeitwert, der die Zeit in Millisekunden ab 1970-01-01T00:00:00Z angibt. Wenn keine Uhrzeit angegeben ist, wird die Standardeinstellung „jetzt“ verwendet.
Für diese Methode müssen die folgenden Felder im Objekt Place
vorhanden sein:
Place.Field.BUSINESS_STATUS
Place.Field.CURRENT_OPENING_HOURS
Place.Field.OPENING_HOURS
Place.Field.UTC_OFFSET
Wenn diese Felder nicht im Place
-Objekt enthalten sind oder Sie eine Orts-ID übergeben,
verwendet die Methode
PlacesClient.fetchPlace()
um sie abzurufen. Weitere Informationen zum Erstellen des Place-Objekts mit den erforderlichen Feldern
siehe Ortsdetails.
Im folgenden Beispiel sehen Sie, ob ein Ort derzeit geöffnet ist. In diesem Beispiel übergeben Sie nur
die Orts-ID in 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()); // ...
Im nächsten Beispiel wird isOpen()
aufgerufen, wobei ein Place
-Objekt übergeben wird.
Das Objekt Place
muss eine gültige Orts-ID enthalten:
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()); // ... }); // ...
Zuordnungen in der App anzeigen
Wenn in Ihrer App Ortsinformationen, einschließlich Rezensionen zu Orten, angezeigt werden, muss sie auch alle Quellenangaben. Weitere Informationen finden Sie unter Quellenangaben.
Weitere Informationen zu Orts-IDs
Die im Places SDK for Android verwendete Orts-ID ist dieselbe ID. wie in der Places API verwendet. Jede Orts-ID kann sich nur auf einen Ort beziehen, ein Ort kann aber mehrere als eine Orts-ID. Es gibt weitere Umstände, die dazu führen können, eine neue Orts-ID abrufen. Das kann beispielsweise passieren, wenn ein Unternehmen Standort.
Wenn Sie eine Orts-ID angeben, um einen Ort anzufordern, erhalten Sie in der Antwort immer dieselbe Stelle (wenn der Ort noch existiert). Beachten Sie jedoch, dass die Antwort eine Orts-ID enthalten kann, die die sich von der in Ihrer Anfrage unterscheiden.
Weitere Informationen finden Sie in der Orts-ID-Übersicht.