W prośbie o wyszukiwanie w pobliżu (nowa) jako argument wejściowy podajesz region do przeszukania określony jako okrąg zdefiniowany przez współrzędne szerokości i długości geograficznej punktu środkowego oraz promień w metrach. Żądanie zwraca listę pasujących miejsc, z których każde jest reprezentowane przez obiekt GMSPlace
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ć uwzględnione lub wykluczone z odpowiedzi. Możesz na przykład określić, aby w odpowiedzi uwzględnić tylko miejsca typu „restauracja”, „piekarnia” i „kawiarnia” lub wykluczyć wszystkie miejsca typu „szkoła”.
Wyszukiwanie w pobliżu (nowe)
Prześlij żądanie wyszukiwania w pobliżu, wywołując funkcję GMSPlacesClient searchNearbyWithRequest:
, przekazując obiekt GMSPlaceSearchNearbyRequest
, który definiuje parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchNearbyResultCallback
, aby obsłużyć odpowiedź.
Obiekt GMSPlaceSearchNearbyRequest
określa wszystkie wymagane i opcjonalne parametry żądania. Wymagane parametry:
- Lista pól do zwrócenia w obiekcie
GMSPlace
, zwana też maską pola, zdefiniowana przez parametrGMSPlaceProperty
. Jeśli na liście pól nie określisz co najmniej 1 pola lub pominiesz listę pól, wywołanie zwróci błąd. - Ograniczenie dotyczące lokalizacji, czyli koło określające obszar wyszukiwania.
W tym przykładzie zapytania o wyszukiwanie w pobliżu określono, że obiekty odpowiedzi GMSPlace
zawierają nazwę miejsca (GMSPlacePropertyName
) i współrzędne miejsca (GMSPlacePropertyCoordinate
) dla każdego obiektu GMSPlace
w wynikach wyszukiwania. Filtruje ona też odpowiedź, aby zwracać 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; } } ];
Pakiet SDK Miejsca Swift na iOS (wersja podglądowa)
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 na wyszukiwanie w pobliżu
Interfejs Nearby Search API zwraca tablicę dopasowań w postaci obiektówGMSPlace
, z jednym obiektem GMSPlace
na każde pasujące miejsce.
Pobieranie stanu otwartości
Obiekt GMSPlacesClient
zawiera funkcję członkowską o nazwie isOpenWithRequest
(isOpenRequest
w Swift i isPlaceOpenRequest
w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy dane miejsce jest obecnie otwarte, na podstawie czasu określonego w wywołaniu.
Ta metoda przyjmuje jeden argument typu GMSPlaceIsOpenWithRequest
, który zawiera:
- Obiekt
GMSPlace
lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Miejsce z wymaganymi polami znajdziesz w sekcji Szczegóły miejsca.
- Opcjonalny obiekt
NSDate
(Obj-C) lubDate
(Swift), który określa czas, jaki chcesz sprawdzić. Jeśli nie podasz czasu, domyślnie zostanie ustawiona bieżąca chwila. - Metoda
GMSPlaceOpenStatusResponseCallback
do obsługi odpowiedzi. >
Metoda GMSPlaceIsOpenWithRequest
wymaga ustawienia w obiekcie GMSPlace
tych pól:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
Jeśli te pola nie są dostępne w obiekcie Miejsce lub jeśli przekazujesz identyfikator miejsca, metoda używa do ich pobierania GMSPlacesClient GMSFetchPlaceRequest:
.
isOpenWithRequest
odpowiedź
isOpenWithRequest
zwraca obiekt GMSPlaceIsOpenResponse
zawierający wartość logiczną o nazwie status
, która wskazuje, czy firma jest otwarta, zamknięta czy jej stan jest nieznany.
Język | Wartość, jeśli jest otwarta | Wartość, jeśli jest zamknięta | Wartość, jeśli stan jest nieznany |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (wersja testowa) | true |
false |
nil |
Płatności za konto isOpenWithRequest
- Za pola
GMSPlacePropertyUTCOffsetMinutes
iGMSPlacePropertyBusinessStatus
są naliczane opłaty w ramach SKU danych podstawowych. Pozostałe godziny otwarcia są naliczane zgodnie z kodem SKU Enterprise w ramach usługi Szczegóły miejsca. - Jeśli obiekt
GMSPlace
już zawiera te pola z poprzedniego zapytania, nie zostanie pobrana kolejna opłata.
Przykład: wysłanie prośby GMSPlaceIsOpenWithRequest
Poniższy przykład pokazuje, jak zainicjować GMSPlaceIsOpenWithRequest
w obiekcie GMSPlace
.
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Wymagane parametry
Aby określić wymagane parametry wyszukiwania, użyj obiektu GMSPlaceSearchNearbyRequest
.
-
Lista pól
Gdy żądasz szczegółów miejsca, musisz określić dane, które mają zostać zwrócone w obiekcie
GMSPlace
dla miejsca jako maska pola. Aby zdefiniować maskę pola, prześlij tablicę wartości zGMSPlaceProperty
do obiektuGMSPlaceSearchNearbyRequest
. Maskowanie pól to dobra praktyka projektowania, która pozwala uniknąć żądania niepotrzebnych danych, co pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.Podaj co najmniej 1 z tych pól:
Te pola powodują użycie kodu SKU Nearby Search Pro:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntrance
Te pola powodują uruchomienie kodu SKU wyszukiwania w pobliżu w Enterprise:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Te pola powodują uruchomienie poziomu Enterprise Plus usługi wyszukiwania w pobliżu:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
W tym przykładzie przekazywana jest lista 2 wartości pól, aby określić, że obiekt
GMSPlace
zwracany 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];
Pakiet SDK Miejsca Swift na iOS (wersja podglądowa)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
Obiekt
GMSPlaceLocationRestriction
określający region wyszukiwania określony jako okrąg z punktami środkowymi i promieniem w metrach. Promień musi się mieścić w przedziale 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
Użyj obiektu GMSPlaceSearchNearbyRequest
, aby określić opcjonalne parametry wyszukiwania.
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
Umożliwia określenie listy typów z tabel tabeli A, których można użyć do filtrowania wyników wyszukiwania. W każdej kategorii ograniczeń typu możesz określić maksymalnie 50 typów.
Miejsce może mieć tylko jeden podstawowy typ z typów wymienionych w tabeli A. Na przykład typ podstawowy może być
"mexican_restaurant"
lub"steak_house"
. Użyj właściwościincludedPrimaryTypes
iexcludedPrimaryTypes
, aby filtrować wyniki według głównego typu miejsca.Miejsce może też mieć wiele wartości typu z typów wymienionych w tabeli A powiązanych z tym miejscem. Na przykład restauracja może mieć te typy:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. Użyj znakówincludedTypes
iexcludedTypes
, aby filtrować wyniki na liście typów powiązanych z miejscem.Jeśli określisz ogólny podstawowy typ, np.
"restaurant"
lub"hotel"
, odpowiedź może zawierać miejsca o bardziej szczegółowym podstawowym typie niż podany. Możesz na przykład określić, że chcesz uwzględnić główny typ:"restaurant"
. Odpowiedź może zawierać miejsca o podstawowym typie"restaurant"
, ale może też zawierać miejsca o bardziej szczegółowym typie podstawowym, np."chinese_restaurant"
lub"seafood_restaurant"
.Jeśli wyszukiwanie jest określone z wieloma ograniczeniami typu, zwracane są tylko miejsca, które spełniają wszystkie ograniczenia. Jeśli np. podasz wartość
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
, miejsca zwrócone przez wyszukiwanie będą świadczyć usługi związane z"restaurant"
, ale nie będą działać głównie jako"steak_house"
.includedTypes
Lista typów miejsc z tabeli A, których szukać. Jeśli ten parametr zostanie pominięty, zwrócone zostaną miejsca wszystkich typów.
excludedTypes
Lista typów miejsc z tabeli A do wykluczenia z wyszukiwania.
Jeśli w żądaniu podasz zarówno parametr
includedTypes
(np."school"
), jak iexcludedTypes
(np."primary_school"
), odpowiedź będzie zawierać miejsca zakwalifikowane jako"school"
, ale nie jako"primary_school"
. Odpowiedź zawiera miejsca, które pasują do co najmniej jednego zincludedTypes
i żadnego zexcludedTypes
.Jeśli występują jakieś sprzeczne typy, np. typ występujący zarówno w opcji
includedTypes
, jak iexcludedTypes
, zwracany jest błądINVALID_REQUEST
.includedPrimaryTypes
Lista podstawowych typów miejsc z tabeli A do uwzględnienia w wyszukiwaniu.
excludedPrimaryTypes
Lista głównych typów miejsc z tabeli A do wykluczenia z wyszukiwania.
Jeśli występują jakieś sprzeczne typy podstawowe, np. typ występujący zarówno w
includedPrimaryTypes
, jak iexcludedPrimaryTypes
, zwracany jest błądINVALID_ARGUMENT
. -
maxResultCount
Określa maksymalną liczbę wyników wyszukiwania miejsc do zwrócenia. Musi mieścić się w zakresie od 1 do 20 (domyślnie).
-
rankPreference
Typ rankingu do użycia. Jeśli ten parametr zostanie pominięty, wyniki zostaną posortowane według popularności. Może być jedną z tych wartości:
.popularity
(ustawienie domyślne) – sortuje wyniki według ich popularności..distance
Sortuje wyniki w kolejności rosnącej według odległości od wybranej lokalizacji.
-
regionCode
Kod regionu użyty do sformatowania odpowiedzi, podany jako 2-znakowy kod CLDR. Nie ma wartości domyślnej.
Jeśli nazwa kraju w polu
formattedAddress
w odpowiedzi pasuje do wartości w poluregionCode
, kod kraju jest pomijany w poluformattedAddress
. Ten parametr nie ma wpływu naadrFormatAddress
, który zawsze zawiera nazwę kraju, ani nashortFormattedAddress
, która nigdy nie zawiera nazwy kraju.Większość kodów CLDR jest identyczna z kodami ISO 3166-1, z niektórymi 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 w zależności od obowiązujących przepisów.
Wyświetlanie informacji o pochodzeniu danych w aplikacji
Jeśli aplikacja wyświetla informacje uzyskane z GMSPlacesClient
, takie jak zdjęcia i opinie, musi też wyświetlać wymagane informacje o źródle.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę zawierającą do 5 obiektów GMSPlaceReview
. Każdy obiekt GMSPlaceReview
może zawierać informacje o źródłach i autorach.
Jeśli wyświetlasz opinię w aplikacji, musisz też wyświetlić wszelkie informacje o źródle lub autora.
Więcej informacji znajdziesz w dokumentacji dotyczącej przypisywania zasług.