Żądanie wyszukiwania w pobliżu (nowe) przyjmuje jako dane wejściowe region, w którym ma się odbyć wyszukiwanie. Jest on określony jako okrąg zdefiniowany przez współrzędne geograficzne środka okręgu oraz promień w metrach. Żądanie zwraca listę pasujących miejsc, z których każde jest reprezentowane przez
Place
obiekt, w określonym obszarze wyszukiwania.
Domyślnie odpowiedź zawiera miejsca wszystkich typów w obszarze wyszukiwania. Opcjonalnie możesz filtrować odpowiedź, określając listę typów miejsc, które mają być wyraźnie uwzględnione lub wykluczone z odpowiedzi. Możesz na przykład określić, że w odpowiedzi mają się znajdować tylko miejsca typu „restauracja”, „piekarnia” i „kawiarnia”, lub wykluczyć wszystkie miejsca typu „szkoła”.
Żądania wyszukiwania w pobliżu (nowe)
Aby wysłać żądanie wyszukiwania w pobliżu (nowe), wywołaj metodę
PlacesClient.searchNearby,
przekazując obiekt
SearchNearbyRequest
, który określa parametry żądania.
Obiekt SearchNearbyRequest określa wszystkie wymagane i opcjonalne parametry żądania. Wymagane parametry to:
- Lista pól, które mają zostać zwrócone w obiekcie
Place, znana też jako maska pola. Jeśli nie określisz co najmniej 1 pola na liście pól lub pominiesz listę pól, wywołanie zwróci błąd. - Ograniczenie lokalizacji dla obszaru wyszukiwania, zdefiniowane jako para szerokości i długości geograficznej oraz wartość promienia w metrach.
Ten przykład żądania wyszukiwania w pobliżu określa, że obiekty Place w odpowiedzi
mają zawierać pola miejsca Place.Field.ID i Place.Field.DISPLAY_NAME dla
każdego obiektu Place w wynikach wyszukiwania. Filtruje też odpowiedź, aby zwracać tylko miejsca typu „restauracja” i „kawiarnia”, ale wykluczać miejsca typu „pizzeria” i „restauracja amerykańska”.
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Odpowiedzi wyszukiwania w pobliżu (nowe)
Klasa
SearchNearbyResponse
reprezentuje odpowiedź na żądanie wyszukiwania. Obiekt SearchNearbyResponse zawiera:
- Listę obiektów
Place, które reprezentują wszystkie pasujące miejsca. Każde pasujące miejsce jest reprezentowane przez 1 obiektPlace. - Każdy obiekt
Placezawiera tylko pola zdefiniowane przez listę pól przekazaną w żądaniu.
Na przykład w żądaniu zdefiniowano listę pól w ten sposób:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Ta lista pól oznacza, że każdy obiekt Place w odpowiedzi zawiera tylko identyfikator miejsca i nazwę każdego pasującego miejsca. Następnie możesz użyć metod Place.getId()
i Place.getName(), aby uzyskać dostęp do tych pól w każdym obiekcie Place.
Więcej przykładów uzyskiwania dostępu do danych w obiekcie Place znajdziesz w artykule Dostęp do pól danych obiektu Place.
Wymagane parametry
Aby określić wymagane parametry wyszukiwania, użyj obiektu
SearchNearbyRequest.
Lista pól
Gdy prosisz o informacje o miejscu, musisz określić dane, które mają zostać zwrócone w obiekcie
Placedla tego miejsca, jako maskę pola. Aby zdefiniować maskę pola, przekaż tablicę wartości zPlace.Fielddo obiektuSearchNearbyRequest. Maskowanie pól to dobra praktyka projektowania, która pozwala uniknąć żądania niepotrzebnych danych, co pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.Określ co najmniej 1 z tych pól:
Następujące pola aktywują jednostkę SKU Wyszukiwanie w pobliżu Pro:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* Użyj zamiastPlace.Field.NAME, które jest wycofane.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* Użyj zamiastPlace.Field.ICON_URL, które jest wycofane.
Place.Field.ID
Place.Field.LAT_LNG
Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
Place.Field.PRIMARY_TYPE
Place.Field.PRIMARY_TYPE_DISPLAY_NAME
Place.Field.RESOURCE_NAME
Place.Field.TYPES
Place.Field.UTC_OFFSET
Place.Field.VIEWPORT
Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCEPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w artykule Pola danych o miejscach (nowe).
Następujące pola aktywują jednostkę SKU Wyszukiwanie w pobliżu Enterprise:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* Użyj zamiastPlace.Field.PHONE_NUMBER, które jest wycofane.
Place.Field.NATIONAL_PHONE_NUMBER
Place.Field.OPENING_HOURS
Place.Field.PRICE_LEVEL
Place.Field.RATING
Place.Field.SECONDARY_OPENING_HOURS
Place.Field.USER_RATING_COUNT*
* Użyj zamiastPlace.Field.USER_RATINGS_TOTAL, które jest wycofane.
Place.Field.WEBSITE_URIPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w artykule Pola danych o miejscach (nowe).
Następujące pola aktywują Wyszukiwanie w pobliżu Enterprise Plus SKU:
Place.Field.ALLOWS_DOGS
Place.Field.CURBSIDE_PICKUP
Place.Field.DELIVERY
Place.Field.DINE_IN
Place.Field.EDITORIAL_SUMMARY
Place.Field.EV_CHARGE_OPTIONS
Place.Field.FUEL_OPTIONS
Place.Field.GOOD_FOR_CHILDREN
Place.Field.GOOD_FOR_GROUPS
Place.Field.GOOD_FOR_WATCHING_SPORTS
Place.Field.LIVE_MUSIC
Place.Field.MENU_FOR_CHILDREN
Place.Field.OUTDOOR_SEATING
Place.Field.PARKING_OPTIONS
Place.Field.PAYMENT_OPTIONS
Place.Field.RESERVABLE
Place.Field.RESTROOM
Place.Field.REVIEWS
Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
Place.Field.SERVES_BRUNCH
Place.Field.SERVES_COCKTAILS
Place.Field.SERVES_COFFEE
Place.Field.SERVES_DESSERT
Place.Field.SERVES_DINNER
Place.Field.SERVES_LUNCH
Place.Field.SERVES_VEGETARIAN_FOOD
Place.Field.SERVES_WINE
Place.Field.TAKEOUTPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w artykule Pola danych o miejscach (nowe).
Aby ustawić parametr listy pól, wywołaj metodę
setPlaceFields()podczas tworzenia obiektuSearchNearbyRequest.Ten przykład definiuje listę 2 wartości pól, aby określić, że obiekt
Placezwracany przez żądanie ma zawierać polaPlace.Field.IDiPlace.Field.DISPLAY_NAMEfields:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Ograniczenie lokalizacji
Obiekt
LocationRestriction, który określa region, w którym ma się odbyć wyszukiwanie. Jest on zdefiniowany jako okrąg zdefiniowany przez środek i promień w metrach. Promień musi być większy niż 0,0 i mniejszy lub równy 50 000,0. Pamiętaj, że jeśli określisz zbyt mały promień, odpowiedź będzie zawieraćZERO_RESULTS.Aby ustawić parametr ograniczenia lokalizacji, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetLocationRestriction().
Parametry opcjonalne
Aby określić opcjonalne parametry wyszukiwania, użyj obiektu
SearchNearbyRequest.
-
Typy i typy podstawowe
Pozwala określić listę typów z tabeli A, które mają być używane do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń typu można określić maksymalnie 50 typów.
Miejsce może mieć tylko 1 typ podstawowy z tabeli A. Typ podstawowy może być np.
"mexican_restaurant"lub"steak_house". UżyjincludedPrimaryTypesiexcludedPrimaryTypes, aby filtrować wyniki według typu podstawowego miejsca.Miejsce może też mieć wiele wartości typu z typów tabeli A. Na przykład restauracja może mieć te typy:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". UżyjincludedTypesiexcludedTypes, aby filtrować wyniki według listy typów powiązanych z miejscem.Jeśli określisz ogólny typ podstawowy, np.
"restaurant"lub"hotel", odpowiedź może zawierać miejsca z bardziej szczegółowym typem podstawowym niż ten, który został określony. Na przykład określisz, że ma być uwzględniony typ podstawowy"restaurant". Odpowiedź może wtedy zawierać miejsca z typem podstawowym"restaurant", ale odpowiedź może też zawierać miejsca z bardziej szczegółowym typem podstawowym, np."chinese_restaurant"lub"seafood_restaurant".Jeśli wyszukiwanie jest określone z kilkoma ograniczeniami typu, zwracane są tylko miejsca które spełniają wszystkie ograniczenia. Jeśli na przykład określisz
includedTypes = Arrays.asList("restaurant")iexcludedPrimaryTypes = Arrays.asList("steak_house"), zwrócone miejsca będą świadczyć usługi związane z"restaurant", ale nie będą działać głównie jako"steak_house".Przykład użycia
includedTypesiexcludedTypesznajdziesz w sekcji Żądania wyszukiwania w pobliżu (nowe).Uwzględnione typy
Lista typów miejsc z tabeli A, które mają być wyszukiwane. Jeśli ten parametr zostanie pominięty, zwracane są miejsca wszystkich typów.
Aby ustawić parametr uwzględnionych typów, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetIncludedTypes().Wykluczone typy
Lista typów miejsc z tabeli A, które mają być wykluczone z wyszukiwania.
Jeśli w żądaniu określisz zarówno
includedTypes(np."school"), jak iexcludedTypes(np."primary_school"), odpowiedź będzie zawierać miejsca, które są sklasyfikowane jako"school"ale nie jako"primary_school". Odpowiedź zawiera miejsca, które pasują do co najmniej 1 z theincludedTypesi żadnego zexcludedTypes.Jeśli występują sprzeczne typy, np. typ pojawia się zarówno w
includedTypesiexcludedTypes, zwracany jest błądINVALID_REQUEST.Aby ustawić parametr wykluczonych typów, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetExcludedTypes().Uwzględnione typy podstawowe
Lista podstawowych typów miejsc z tabeli A, które mają być uwzględnione w wyszukiwaniu.
Aby ustawić parametr uwzględnionych typów podstawowych, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetIncludedPrimaryTypes().Wykluczone typy podstawowe
Lista podstawowych typów miejsc z tabeli A, które mają być wykluczone z wyszukiwania.
Jeśli występują sprzeczne typy podstawowe, np. typ pojawia się zarówno w
includedPrimaryTypesiexcludedPrimaryTypes, zwracany jest błądINVALID_ARGUMENT.Aby ustawić parametr wykluczonych typów podstawowych, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetExcludedPrimaryTypes(). -
Maksymalna liczba wyników
Określa maksymalną liczbę wyników wyszukiwania miejsc, które mają zostać zwrócone. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.
Aby ustawić parametr maksymalnej liczby wyników, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetMaxResultCount(). -
Preferencje rankingu
Typ rankingu do użycia. Jeśli ten parametr zostanie pominięty, wyniki są sortowane według popularności. Może to być jedna z tych wartości:
POPULARITY(domyślnie) – sortuje wyniki według popularności.DISTANCE– sortuje wyniki w kolejności rosnącej według odległości od określonej lokalizacji.
Aby ustawić parametr preferencji rankingu, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetRankPreference(). -
Kod regionu
Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowa wartość kodu CLDR. Nie ma wartości domyślnej.
Jeśli nazwa kraju w polu
FORMATTED_ADDRESSw odpowiedzi pasuje doregionCode, kod kraju jest pomijany wFORMATTED_ADDRESS.Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). Parametr może wpływać na wyniki na podstawie obowiązującego prawa.
Aby ustawić parametr kodu regionu, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetRegionCode().
Wyświetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane od
PlacesClient,
takie jak zdjęcia i opinie, musi też wyświetlać wymagane atrybucje.
Więcej informacji znajdziesz w artykule Zasady dotyczące pakietu Places SDK na Androida.