„Place Details“

Plattform auswählen: Android iOS JavaScript Webdienst

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:

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() bis List 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 stattdessen getAddress() 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 Sie OpeningHours.getWeekdayText() auf, um eine Liste der Zeichenfolgen, die die Öffnungs- und Schließzeiten für jeden Tag des in der Woche. Rufen Sie OpeningHours.getPeriods() auf, um eine Liste mit period-Objekte mit detaillierteren Informationen, die entspricht den von getWeekdayText() bereitgestellten Daten.

    Das Place-Objekt enthält außerdem den Parameter getCurrentOpeningHours() , 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 sowohl Place.Field.UTC_OFFSET als auch Place.Field.OPENING_HOURS sind verfügbar. Um die Korrektheit der fordern Sie die Place.Field.BUSINESS_STATUS- und Place.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 von isOpen 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.
    }
});

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

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.