Szczegóły miejsc

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Pakiet Places SDK na Androida zapewnia Twojej aplikacji pełne informacje o miejscach, w tym nazwę i adres, położenie geograficzne podane jako współrzędne geograficzne, rodzaj miejsca (np. klub nocny, sklep zoologiczny i muzeum). Aby uzyskać dostęp do tych informacji o konkretnym miejscu, możesz użyć identyfikatora miejsca – stałego identyfikatora, który jednoznacznie identyfikuje miejsce.

Szczegóły miejsca

Obiekt Place zawiera informacje o konkretnym miejscu. Obiekt Place możesz zablokować na kilka sposobów:

W prośbie o miejsce musisz określić, które dane miejsca chcesz zwrócić. Aby to zrobić, przekaż listę wartości Place.Field określających dane do zwrócenia. Ta lista jest ważna, ponieważ wpływa na koszt każdego żądania.

Wyniki wyszukiwania danych miejsc nie mogą być puste, dlatego zwracane są tylko wyniki miejsc z danymi (na przykład jeśli żądane miejsce nie zawiera zdjęć, w wyniku nie będzie pola photos).

Ten przykład przekazuje listę 3 wartości Place.Field, by określić dane zwracane przez żądanie:

Java

// Specify the fields to return.
final List placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);

Kotlin

// Specify the fields to return.
val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)

Po uzyskaniu obiektu Place użyj metod obiektu, aby pobrać dane miejsca. Poniżej znajdziesz przykłady kilku dostępnych metod. Pełną listę wszystkich metod znajdziesz w dokumentacji API Place.

  • getAddress() – adres miejsca w formacie czytelnym dla człowieka.
  • getAddressComponents()List komponentów adresu tego miejsca. Komponenty te są używane do wyodrębniania uporządkowanych informacji o adresie miejsca, np. poprzez znalezienie miasta, w którym się ono znajduje. Nie używaj tych komponentów do formatowania adresu. Zamiast tego wywołaj getAddress(), który zawiera zlokalizowany format adresu.
  • getID() – identyfikator tekstowy miejsca. Więcej informacji o identyfikatorach miejsc znajdziesz w dalszej części strony.
  • getLatLng() – położenie geograficzne miejsca określone jako współrzędne geograficzne.
  • getName() – nazwa miejsca;
  • getOpeningHours()OpeningHours miejsca. Wywołaj OpeningHours.getWeekdayText(), aby wyświetlić listę ciągów znaków reprezentujących godziny otwarcia i zamknięcia w każdym dniu tygodnia. Wywołaj OpeningHours.getPeriods(), aby wyświetlić listę obiektów period z bardziej szczegółowymi informacjami odpowiednikami danych udostępnionych przez getWeekdayText(). Uwaga: jeśli miejsce jest zawsze otwarte, przedział czasu jest przedstawiony jako niedziela o północy, a closeEvent ma wartość NULL.
  • isOpen() – wartość logiczna wskazująca, czy dane miejsce jest obecnie otwarte. Jeśli nie określisz czasu, domyślną wartością będzie teraz. Wartość isOpen zostanie zwrócona tylko wtedy, gdy będą dostępne właściwości Place.Field.UTC_OFFSET i Place.Field.OPENING_HOURS. Aby zapewnić dokładne wyniki, poproś o pola Place.Field.BUSINESS_STATUS i Place.Field.UTC_OFFSET w pierwotnym żądaniu miejsca. W przypadku braku prośby zakłada się, że firma działa. Aby dowiedzieć się, jak korzystać ze znaczników isOpen w przypadku szczegółów miejsca, obejrzyj ten film.

Oto kilka prostych przykładów:

Java


final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final LatLng location = place.getLatLng();

      

Kotlin


val name = place.name
val address = place.address
val location = place.latLng

      

Pobierz miejsce według identyfikatora

Identyfikator miejsca to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. W pakiecie Places SDK dla Androida możesz pobrać identyfikator miejsca, wywołując opcję Place.getId(). Usługa autouzupełniania miejsc zwraca też identyfikator miejsca dla każdego miejsca pasującego do dostarczonego zapytania i filtra. Możesz zapisać identyfikator miejsca i użyć go do ponownego pobrania obiektu Place.

Aby uzyskać miejsce według identyfikatora, wywołaj PlacesClient.fetchPlace(), przekazując FetchPlaceRequest.

Interfejs API zwróci błąd FetchPlaceResponse w obiekcie Task. FetchPlaceResponse zawiera obiekt Place pasujący do podanego identyfikatora miejsca.

Poniższy przykładowy kod pokazuje, jak wywołać fetchPlace(), aby uzyskać szczegółowe informacje o określonym miejscu.

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

      

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")
        }
    }

      

Wyświetlanie atrybucji w aplikacji

Gdy aplikacja wyświetla informacje o miejscu, musi też wyświetlać atrybucje. Zobacz dokumentację dotyczącą atrybucji.

Więcej informacji o identyfikatorach miejsc

Identyfikator miejsca używany w pakiecie SDK Miejsc na Androida jest taki sam jak identyfikator w interfejsie API Miejsc. Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć ich więcej. Są inne okoliczności, które mogą spowodować, że miejsce otrzyma nowy identyfikator miejsca. Może się tak na przykład zdarzyć, gdy firma przejdzie na nową lokalizację.

Gdy poprosisz o miejsce, podając identyfikator miejsca, możesz mieć pewność, że w odpowiedzi zawsze znajdziesz to samo miejsce (jeśli dane miejsce nadal istnieje). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca inny niż identyfikator w prośbie.

Więcej informacji znajdziesz w opisie identyfikatora miejsca.