Żądanie wyszukiwania w pobliżu (nowe) przyjmuje jako dane wejściowe region do wyszukania określony jako okrąg zdefiniowany przez współrzędne geograficzne punktu środkowego okręgu i promień w metrach. Żądanie zwraca listę pasujących miejsc, z których każde jest reprezentowane przez obiekt Place w określonym obszarze wyszukiwania.
Domyślnie odpowiedź zawiera miejsca wszystkich typów w obszarze wyszukiwania. Opcjonalnie możesz przefiltrować odpowiedź, podając listę typów miejsc, które mają być wyraźnie uwzględnione w odpowiedzi lub z niej wykluczone. 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)
Wyślij żądanie wyszukiwania w pobliżu (nowe), wywołując funkcję
PlacesClient.searchNearby i przekazując obiekt
SearchNearbyRequest
definiujący parametry żądania.
Obiekt SearchNearbyRequest określa wszystkie wymagane i opcjonalne parametry żądania. Wymagane parametry to:
- Lista pól do zwrócenia w obiekcie
Place, który jest też nazywany maską pola. Jeśli nie określisz co najmniej jednego pola na liście pól lub pominiesz listę pól, wywołanie zwróci błąd. - Ograniczenie lokalizacji 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 odpowiedzi Place zawierają 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 z wyszukiwania w pobliżu (nowość)
Klasa SearchNearbyResponse
reprezentuje odpowiedź na żądanie wyszukiwania. Obiekt SearchNearbyResponse zawiera:
- Lista obiektów
Placereprezentujących wszystkie pasujące miejsca, przy czym każdy obiektPlaceodpowiada jednemu pasującemu miejscu. - Każdy obiekt
Placezawiera tylko pola zdefiniowane na liście pól przekazanej 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 Uzyskiwanie dostępu do pól danych obiektu Place.
Wymagane parametry
Użyj obiektu
SearchNearbyRequest
, aby określić wymagane parametry wyszukiwania.
Lista pól
Gdy wysyłasz prośbę o szczegóły miejsca, musisz określić dane, które mają zostać zwrócone w obiekcie
Placedla miejsca jako maska 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 z kolei pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.Określ co najmniej jedno z tych pól:
Te pola aktywują SKU Nearby Search Pro:
Place.Field.ADDRESS_COMPONENTS
Place.Field.BUSINESS_STATUS
Place.Field.ADDRESS
Place.Field.DISPLAY_NAME>*
* Użyj zamiast parametruPlace.Field.NAME, który został wycofany.
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL*
* Używaj zamiast wycofanej funkcjiPlace.Field.ICON_URL.
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_ENTRANCETe pola aktywują Nearby Search Enterprise SKU:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER*
* Używaj zamiastPlace.Field.PHONE_NUMBER, które zostało 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 zostało wycofane.
Place.Field.WEBSITE_URITe pola aktywują SKU Nearby Search Enterprise Plus:
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.TAKEOUT
Aby ustawić parametr listy pól, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetPlaceFields().W tym przykładzie zdefiniowano listę 2 wartości pól, aby określić, że obiekt
Placezwracany przez żądanie zawiera polaPlace.Field.IDiPlace.Field.DISPLAY_NAME:
// 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 dotyczące lokalizacji
Obiekt
LocationRestriction, który określa region wyszukiwania jako okrąg zdefiniowany przez punkt środkowy i promień w metrach. Promień musi być większy niż 0,0 i mniejszy lub równy 50 000,0. Pamiętaj, że podanie zbyt małego promienia spowoduje zwrócenie odpowiedziZERO_RESULTS.Aby ustawić parametr ograniczenia lokalizacji, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetLocationRestriction().
Parametry opcjonalne
Użyj obiektu
SearchNearbyRequest
, aby określić opcjonalne parametry wyszukiwania.
-
Typy i typy podstawowe
Umożliwia określenie listy typów z tabeli A, które są używane do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń dotyczących typu możesz określić maksymalnie 50 typów.
Miejsce może mieć tylko jeden typ podstawowy z typów wymienionych w tabeli A. Typ podstawowy może być np.
"mexican_restaurant"lub"steak_house". UżyjincludedPrimaryTypesiexcludedPrimaryTypes, aby filtrować wyniki według głównego typu miejsca.Miejsce może też mieć wiele wartości typu z typów Tabela A z nim powiązanych. Na przykład restauracja może mieć te typy:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". Użyj znakówincludedTypesiexcludedTypes, aby filtrować wyniki na liście typów powiązanych z miejscem.Jeśli określisz ogólny typ podstawowy, np.
"restaurant"lub"hotel", odpowiedź może zawierać miejsca o bardziej szczegółowym typie podstawowym niż podany. Na przykład określasz, że chcesz uwzględnić typ podstawowy"restaurant". Odpowiedź może wtedy zawierać miejsca z podstawowym typem"restaurant", ale może też zawierać miejsca z bardziej szczegółowym typem podstawowym, np."chinese_restaurant"lub"seafood_restaurant".Jeśli wyszukiwanie zawiera wiele ograniczeń typu, zwracane są tylko miejsca, które spełniają wszystkie te ograniczenia. Jeśli na przykład określisz
includedTypes = Arrays.asList("restaurant")iexcludedPrimaryTypes = Arrays.asList("steak_house"), zwrócone miejsca będą oferować usługi związane z"restaurant", ale nie będą działać głównie jako"steak_house".Przykład użycia parametrów
includedTypesiexcludedTypesznajdziesz w sekcji Żądania wyszukiwania w pobliżu (nowe).Uwzględnione typy
Lista typów miejsc z tabeli A, których chcesz wyszukać. Jeśli ten parametr zostanie pominięty, zwracane są miejsca wszystkich typów.
Aby ustawić parametr includedTypes, 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 parametr
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 jednego zincludedTypesi żadnego zexcludedTypes.Jeśli wystąpią sprzeczne typy, np. typ pojawiający się zarówno w
includedTypes, jak iexcludedTypes, zwracany jest błądINVALID_REQUEST.Aby ustawić parametr wykluczonych typów, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetExcludedTypes().Uwzględnione typy podstawowe
Lista głównych typów miejsc z tabeli A, które mają być uwzględnione w wyszukiwaniu.
Aby ustawić parametr includedPrimaryTypes, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetIncludedPrimaryTypes().Wykluczone typy podstawowe
Lista głównych typów miejsc z tabeli A, które mają zostać wykluczone z wyszukiwania.
Jeśli występują sprzeczne typy podstawowe, np. typ pojawiający się zarówno w
includedPrimaryTypes, jak i wexcludedPrimaryTypes, 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 dotyczących miejsc do zwrócenia. Musi mieścić się w przedziale od 1 do 20 (wartość domyślna) włącznie.
Aby ustawić parametr maksymalnej liczby wyników, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetMaxResultCount(). -
Ustawienie rankingu
Typ rankingu, którego należy użyć. Jeśli ten parametr zostanie pominięty, wyniki będą sortowane według popularności. Może mieć jedną z tych wartości:
POPULARITY(domyślnie) Sortuje wyniki według popularności.DISTANCESortuje 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 dwuznakowy kod CLDR. Nie ma wartości domyślnej.
Jeśli nazwa kraju w polu
FORMATTED_ADDRESSw odpowiedzi pasuje doregionCode, kod kraju jest pomijany w poluFORMATTED_ADDRESS.Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład krajowa domena najwyższego poziomu Zjednoczonego Królestwa to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). W zależności od obowiązujących przepisów parametr może wpływać na wyniki.
Aby ustawić parametr kodu regionu, podczas tworzenia obiektu
SearchNearbyRequestwywołaj metodęsetRegionCode().
Wyświetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane z PlacesClient, takie jak zdjęcia i opinie, musi też wyświetlać wymagane atrybucje.
Więcej informacji znajdziesz w zasadach dotyczących pakietu SDK Miejsc na Androida.