Żądanie wyszukiwania w pobliżu (nowe) obejmuje dane wejściowe regionu do wyszukiwania określonego jako okrąg określony przez współrzędne szerokości i długości geograficznej punktu środkowego oraz promień w metrach. Żądanie zwraca listę pasujących miejsc w określonym obszarze wyszukiwania, z których każde jest reprezentowane przez obiekt GMSPlace
.
Domyślnie odpowiedź zawiera miejsca każdego typu w obszarze wyszukiwania. Opcjonalnie możesz odfiltrować odpowiedź, określając listę typów miejsc, które chcesz wyraźnie uwzględnić w odpowiedzi lub z niej wykluczyć. Możesz na przykład uwzględnić w odpowiedzi tylko te miejsca, które mają typ „restauracja”, „piekarnia” i „kawiarnia”, lub wykluczyć wszystkie miejsca typu „szkoła”.
Prośby o wyszukiwanie w pobliżu (nowe)
Wyślij żądanie wyszukiwania w pobliżu, wywołując GMSPlacesClient searchNearbyWithRequest:
, przesyłając obiekt GMSPlaceSearchNearbyRequest
definiujący parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchNearbyResultCallback
na potrzeby obsługi odpowiedzi.
Obiekt GMSPlaceSearchNearbyRequest
określa wszystkie parametry wymagane i opcjonalne dla żądania. Wymagane parametry:
- Lista pól do zwrócenia w obiekcie
GMSPlace
, nazywana też maską pola, zgodnie z definicją za pomocą właściwościGMSPlaceProperty
. Jeśli nie określisz co najmniej jednego pola na liście pól lub pominiesz tę listę, wywołanie zwróci błąd. - Ograniczenie lokalizacji, czyli okrąg określający obszar wyszukiwania.
To przykładowe żądanie wyszukiwania w pobliżu określa, że odpowiedź obiektów GMSPlace
zawiera nazwę miejsca (GMSPlacePropertyName
) i współrzędne miejsca (GMSPlacePropertyCoordinate
) dla każdego obiektu GMSPlace
w wynikach wyszukiwania. Filtruje też odpowiedź, aby wyświetlić tylko miejsca typu „restauracja” i „kawiarnia”.
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
GooglePlacesSwift
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Odpowiedzi wyszukiwania w pobliżu
Interfejs w pobliżu zwraca tablicę dopasowań w postaci obiektówGMSPlace
, z którym na każde pasujące miejsce odpowiada 1 obiekt GMSPlace
.
Oprócz pól danych obiekt GMSPlace
w odpowiedzi zawiera te funkcje składowe:
-
isOpen
oblicza, czy dane miejsce jest otwarte o określonej godzinie. isOpenAtDate
oblicza, czy dane miejsce jest otwarte w określonym dniu.
Wymagane parametry
Określ parametry wyszukiwania za pomocą obiektu GMSPlaceSearchNearbyRequest
.
-
Lista pól
Żądając szczegółów miejsca, musisz określić dane, które mają być zwracane w obiekcie
GMSPlace
dla tego miejsca jako maska pola. Aby zdefiniować maskę pola, przekaż tablicę wartości z zakresuGMSPlaceProperty
do obiektuGMSPlaceSearchNearbyRequest
. Maskowanie pól to dobra praktyka projektowa, która pozwala uniknąć żądania zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.Określ co najmniej jedno z tych pól:
Te pola wywołują kod SKU wyszukiwania w pobliżu (podstawowe):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyCoordinate
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyName
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlaceID
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Te pola wywołują kod SKU wyszukiwania w pobliżu (zaawansowane):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Te pola wywołują kod SKU wyszukiwania w pobliżu (preferowane):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
W tym przykładzie przekazujemy listę 2 wartości pól, aby wskazać, że obiekt
GMSPlace
zwrócony przez żądanie zawiera polaname
iplaceID
:Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
Obiekt
GMSPlaceLocationRestriction
określający region do przeszukania określony jako okrąg określony przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 włącznie. Domyślny promień to 0,0. W żądaniu musisz ustawić wartość większą niż 0,0.
Parametry opcjonalne
Aby określić opcjonalne parametry wyszukiwania, użyj obiektu GMSPlaceSearchNearbyRequest
.
-
includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes
Umożliwia określenie listy typów z typów Tabela A służących do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń typu można określić do 50 typów.
Miejsce może mieć tylko jeden typ podstawowy z powiązanych z nim typów tabeli A. Typem podstawowym może być na przykład
"mexican_restaurant"
lub"steak_house"
. Użyj właściwościincludedPrimaryTypes
iexcludedPrimaryTypes
, aby filtrować wyniki według podstawowego typu miejsca.Miejsce może też mieć wartości wielu typów z powiązanych z nim typów tabeli A. Na przykład restauracja może mieć te typy:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. Użyj właściwościincludedTypes
iexcludedTypes
, aby filtrować wyniki na liście typów powiązanych z miejscem.Jeśli wyszukiwanie jest określone z wieloma ograniczeniami typów, zwracane są tylko miejsca, które spełniają wszystkie te ograniczenia. Jeśli na przykład podasz
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
, zwrócone miejsca świadczą usługi powiązane z"restaurant"
, ale nie działają głównie jako"steak_house"
.includedTypes
Lista typów miejsc z tabeli A do wyszukania. W przypadku pominięcia tego parametru zwracane są miejsca wszystkich typów.
excludedTypes
Lista typów miejsc z tabeli A, które mają zostać wykluczone z wyszukiwania.
Jeśli w żądaniu podasz zarówno właściwość
includedTypes
(np."school"
), jak iexcludedTypes
(np."primary_school"
), odpowiedź będzie zawierała miejsca zaklasyfikowane jako"school"
, ale nie jako"primary_school"
. Odpowiedź zawiera miejsca pasujące do co najmniej 1 z parametrówincludedTypes
i żadnego z podanych parametrówexcludedTypes
.Jeśli wystąpią jakiekolwiek sprzeczne typy, np. typy występujące zarówno w
includedTypes
, jak i wexcludedTypes
, zostanie zwrócony błądINVALID_REQUEST
.includedPrimaryTypes
Lista typów miejsc głównych z tabeli A, które mają zostać uwzględnione w wyszukiwaniu.
excludedPrimaryTypes
Lista typów miejsc głównych z tabeli A, które mają zostać wykluczone z wyszukiwania.
Jeśli wystąpią jakiekolwiek sprzeczne typy podstawowe, takie jak typ występujący zarówno w atrybutach
includedPrimaryTypes
, jak iexcludedPrimaryTypes
, zwracany jest błądINVALID_ARGUMENT
. -
maxResultCount
Określa maksymalną liczbę zwracanych wyników wyszukiwania miejsc. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.
-
rankPreference
Typ rankingu, który ma zostać użyty. Jeśli pominiesz ten parametr, wyniki będą uporządkowane według popularności. Może mieć jedną z tych wartości:
.popularity
(domyślnie) – sortuje wyniki na podstawie ich popularności..distance
sortuje wyniki w kolejności rosnącej według odległości od określonej lokalizacji.
-
regionCode
Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Brak wartości domyślnej.
Jeśli nazwa kraju w polu
formattedAddress
w odpowiedzi jest zgodna z wartościąregionCode
, kod kraju jest pomijany w poluformattedAddress
. Ten parametr nie ma wpływu na elementadrFormatAddress
, który zawsze zawiera nazwę kraju, lub nashortFormattedAddress
, który nigdy go nie uwzględnia.Większość kodów CLDR jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład domena ccTLD w Wielkiej Brytanii to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie oznaczający jednostkę „Wielka Brytania i Irlandia Północna”). Parametr może wpływać na wyniki w zależności od obowiązującego prawa.
Wyświetlanie atrybucji w aplikacji
Jeśli aplikacja wyświetla informacje uzyskane ze strony GMSPlacesClient
, np. zdjęcia i opinie, musi też wyświetlać wymagane informacje o źródłach.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę z maksymalnie 5 obiektami GMSPlaceReview
. Każdy obiekt GMSPlaceReview
może zawierać atrybucje i informacje o autorach.
Jeśli wyświetlasz opinię w aplikacji, musisz też podać informację o autorze.
Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.