Szczegóły miejsc

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

Pakiet SDK Miejsc na Androida zapewnia wiele informacji o miejscach, w tym m.in. nazwę i adres miejsca, położenie geograficzne podane jako współrzędne geograficzne, typ miejsca (np. klub nocny, sklep zoologiczny, muzeum) i inne informacje. Aby uzyskać dostęp do tych informacji dla określonego miejsca, 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 pobrać w następujący sposób:

Przesyłając prośbę o miejsce, musisz określić, jakie typy danych o miejscu mają być zwracane. Aby to zrobić, prześlij właściwość List<Place.Field>, która określa typy danych do zwrócenia. Jest to ważne, ponieważ ma to wpływ na koszt dla każdego żądania. Wyniki wyszukiwania miejsc nie mogą być puste, więc zwracane są tylko wyniki zawierające dane (na przykład jeśli żądane miejsce nie zawiera zdjęć, w wyniku nie będzie pola photos). Możesz określić jedno lub kilka z tych pól:

  • Place.Field.ADDRESS
  • Place.Field.ADDRESS_COMPONENTS
  • Place.Field.BUSINESS_STATUS
  • Place.Field.ID
  • Place.Field.LAT_LNG
  • Place.Field.NAME
  • Place.Field.OPENING_HOURS
  • Place.Field.PHONE_NUMBER
  • Place.Field.PHOTO_METADATAS
  • Place.Field.PLUS_CODE
  • Place.Field.PRICE_LEVEL
  • Place.Field.RATING
  • Place.Field.TYPES
  • Place.Field.USER_RATINGS_TOTAL
  • Place.Field.ICON_URL
  • Place.Field.ICON_BACKGROUND_COLOR
  • Place.Field.VIEWPORT
  • Place.Field.UTC_OFFSET
  • Place.Field.WEBSITE_URI

Więcej informacji o polach miejsc Więcej informacji o naliczaniu opłat za żądania danych o miejscach znajdziesz w artykule Użycie i płatności.

Aby pobrać dane z Place, użyj tych metod:

  • getAddress() – adres miejsca w postaci zrozumiałej dla człowieka.
  • getAddressComponents()List komponentów adresu tego miejsca. Te komponenty są używane do wyodrębniania uporządkowanych informacji o adresie miejsca, np. o znajdowaniu miasta, w którym się znajduje. Nie używaj tych komponentów do formatowania adresów. Zamiast tego zadzwoń do getAddress(), gdzie znajdziesz sformatowany format adresu.
  • getBusinessStatus() – stan operacyjny miejsca, jeśli jest to firma. Może zawierać jedną z tych wartości: OPERATIONAL, CLOSED_TEMPORARILY, CLOSED PERMANENTLY.
  • getAttributions() – atrybucje, które muszą być wyświetlane użytkownikowi, jeśli używane są dane z tego miejsca.
  • getID() – tekstowy identyfikator miejsca. Więcej informacji o identyfikatorach miejsc znajdziesz w pozostałej części tej strony.
  • getLatLng() – lokalizacja geograficzna miejsca podana 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 poszczególnych dniach tygodnia. Wywołaj OpeningHours.getPeriods(), aby wyświetlić listę obiektów period z bardziej szczegółowymi informacjami odpowiadającymi danym podanym przez getWeekdayText(). Uwaga: jeśli miejsce jest zawsze otwarte, okres jest przedstawiany jako niedziela o północy, a closeEvent ma wartość null.
  • getPhoneNumber() – numer telefonu tego miejsca.
  • getPhotoMetadatas() – metadane powiązane ze zdjęciem powiązanym z miejscem, w tym z bitmapą.
  • getPlusCode() – lokalizacja Plus Code tego miejsca.
  • getPriceLevel() – poziom ceny tego miejsca zwracany jako liczba całkowita z wartościami od 0 (najtańszy) do 4 (najdroższy).
  • getRating() – zagregowana ocena miejsca, która jest zwracana jako liczba zmiennoprzecinkowa z wartościami od 1,0 do 5,0 na podstawie zagregowanych opinii użytkowników.
  • getTypes() – lista typów miejsc, które charakteryzują to miejsce. Listę dostępnych typów miejsc znajdziesz w dokumentacji interfejsu Place.
  • getUserRatingsTotal() – łączna liczba ocen użytkowników tego miejsca.
  • getIconUrl() – adres URL maski czarnej ikony reprezentującej typ miejsca.
  • getIconBackgroundColor – kolor tła ikony danego typu miejsca;
  • getUtcOffsetMinutes() – przesunięcie UTC w minutach.
  • getViewport() – widoczny obszar zwrócony jako obiekt LatLngBounds, który jest przydatny do wyświetlania miejsca na mapie. Zwraca wartość null, jeśli rozmiar miejsca nie jest znany.
  • getWebsiteUri() – identyfikator URI witryny danego miejsca, jeśli jest znany. To witryna obsługiwana przez firmę lub inny podmiot powiązany z tym miejscem. Zwraca wartość null, jeśli żadna witryna nie jest znana.
  • isOpen() – wartość logiczna wskazująca, czy miejsce jest obecnie otwarte. Jeśli nie określisz godziny, domyślną wartością będzie teraz. Wartość isOpen zostanie zwrócona tylko wtedy, gdy dostępne są elementy Place.Field.UTC_OFFSET i Place.Field.OPENING_HOURS. Aby uzyskać dokładne wyniki, poproś o pola Place.Field.BUSINESS_STATUS i Place.Field.UTC_OFFSET w pierwotnym żądaniu miejsca. Jeśli nie poprosimy Cię o weryfikację, zakładamy, że firma działa. Obejrzyj ten film, aby dowiedzieć się, jak używać właściwości isOpen z informacjami o miejscu.

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 tekstowy identyfikator, który jednoznacznie identyfikuje miejsce. W pakiecie Places SDK na Androida możesz pobrać identyfikator miejsca, wywołując Place.getId(). Usługa Autouzupełniaj miejsca 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 funkcję PlacesClient.fetchPlace(), przekazując FetchPlaceRequest.

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

Poniższy przykładowy kod pokazuje wywołanie fetchPlace(), aby uzyskać szczegóły dotyczące określonego miejsca.

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świetlaj informacje o atrybucji w swojej aplikacji

Gdy aplikacja wyświetla informacje o miejscu, musi też zawierać informacje o atrybucji. Zapoznaj się z dokumentacją na temat atrybucji.

Więcej o identyfikatorach miejsc

Identyfikator miejsca używany w pakiecie Miejsc na Androida jest taki sam jak ten używany w Places API. Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć więcej niż 1 identyfikator. Istnieją też inne okoliczności, które mogą spowodować, że otrzymasz nowy identyfikator miejsca. Może się tak na przykład zdarzyć, gdy firma przeprowadzi się do nowej lokalizacji.

Gdy zażądasz miejsca, podając jego identyfikator, możesz mieć pewność, że w odpowiedzi zawsze otrzymasz to samo miejsce (jeśli dane miejsce nadal istnieje). Pamiętaj, że odpowiedź może zawierać identyfikator miejsca inny niż ten podany w Twojej prośbie.

Więcej informacji znajdziesz w omówieniu identyfikatora miejsca.