Pakiet Places SDK for iOS (New) udostępnia aplikacji szczegółowe informacje o miejscach, w tym nazwę i adres miejsca, lokalizację geograficzną określoną za pomocą współrzędnych geograficznych, typ miejsca (np. klub nocny, sklep zoologiczny, muzeum) i inne dane. Aby uzyskać dostęp do tych informacji w przypadku konkretnego miejsca, możesz użyć identyfikatora miejsca, czyli stałego identyfikatora, który jednoznacznie identyfikuje miejsce.
Pobieranie szczegółów miejsca
Klasa
GMSPlace
zawiera informacje o konkretnym miejscu, w tym wszystkie pola danych widoczne w sekcji Pola danych o miejscu (nowe). Pobierz obiekt GMSPlace
, wywołując metodę GMSPlacesClient
fetchPlaceWithRequest:
i przekazując obiekt GMSFetchPlaceRequest
oraz metodę wywołania zwrotnego typu GMSPlaceResultCallback
.
Obiekt GMSFetchPlaceRequest
określa:
- (Wymagany) Identyfikator miejsca, czyli niepowtarzalny identyfikator miejsca w bazie danych Miejsc Google i w Mapach Google.
- (Wymagane) Lista pól do zwrócenia w obiekcie
GMSPlace
, zwana też maską pola, zgodnie z definicją wGMSPlaceProperty
. 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. - (Opcjonalnie) Kod regionu używany do formatowania odpowiedzi.
- (Opcjonalnie) Token sesji używany do zakończenia sesji Autouzupełniania (nowego).
Wysyłanie żądania szczegółów miejsca
Ten przykład pobiera miejsce według identyfikatora, przekazując te parametry:
- Identyfikator miejsca
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Lista pól określająca, że mają być zwracane nazwa miejsca i adres URL witryny.
GMSPlaceResultCallback
do obsługi wyniku.
Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując obiekt GMSPlace
. Jeśli miejsce nie zostanie znalezione, obiekt miejsca będzie miał wartość nil.
Pakiet SDK Miejsc w Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
Odpowiedź Informacje o miejscu
Usługa Place Details zwraca obiekt GMSPlace
zawierający szczegółowe informacje o miejscu. W obiekcie GMSPlace
wypełnione są tylko pola określone na liście pól.
Pobieranie stanu otwarcia
Obiekt GMSPlacesClient
zawiera funkcję składową o nazwie isOpenWithRequest
(isOpenRequest
w Swift i isPlaceOpenRequest
w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, na podstawie czasu określonego w wywołaniu.
Ta metoda przyjmuje jeden argument typu GMSPlaceIsOpenWithRequest
, który zawiera:
GMSPlace
Obiekt lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Place z wymaganymi polami znajdziesz w sekcji Szczegóły miejsca.
- Opcjonalny obiekt
NSDate
(Obj-C) lubDate
(Swift) określający czas, który chcesz sprawdzić. Jeśli nie podasz czasu, zostanie użyta wartość domyślna „teraz”. - 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ą podane w obiekcie Place lub jeśli przekażesz identyfikator miejsca, metoda użyje funkcji GMSPlacesClient GMSFetchPlaceRequest:
, aby je pobrać.
isOpenWithRequest
odpowiedź
isOpenWithRequest
zwraca obiekt GMSPlaceIsOpenResponse
zawierający wartość logiczną o nazwie status
, która wskazuje, czy firma jest otwarta, zamknięta lub czy jej stan jest nieznany.
Język | Wartość, jeśli jest otwarty | Wartość, jeśli firma jest zamknięta | Wartość, jeśli stan jest nieznany |
---|---|---|---|
Places Swift | true |
false |
nil |
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
Płatności za konto isOpenWithRequest
- Pola
GMSPlacePropertyUTCOffsetMinutes
iGMSPlacePropertyBusinessStatus
są rozliczane w ramach podstawowego SKU danych. Za pozostałe godziny otwarcia pobierana jest opłata zgodnie z kodem SKU szczegółów miejsca w wersji Enterprise. - Jeśli Twój
GMSPlace
obiekt ma już te pola z poprzedniego żądania, nie naliczymy opłaty ponownie.
Przykład: wysyłanie prośby GMSPlaceIsOpenWithRequest
Poniższy przykład pokazuje, jak zainicjować GMSPlaceIsOpenWithRequest
w ramach istniejącego obiektu GMSPlace
.
Pakiet SDK Miejsc w Swift
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 }
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 } }];
Wymagane parametry
Aby określić wymagane parametry, użyj obiektu GMSFetchPlaceRequest
.
Identyfikator miejsca
Identyfikator miejsca używany w pakiecie Places SDK na iOS jest tym samym identyfikatorem, który jest używany w interfejsie Places API, pakiecie Places SDK na Androida i innych interfejsach API Google. Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć więcej niż 1 identyfikator.
W pewnych okolicznościach miejsce może otrzymać nowy identyfikator. Może się tak zdarzyć na przykład wtedy, gdy firma przeniesie się do nowej lokalizacji.
Gdy poprosisz o miejsce, podając jego identyfikator, możesz mieć pewność, że w odpowiedzi zawsze otrzymasz to samo miejsce (jeśli nadal istnieje). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca, który różni się od identyfikatora w Twoim żądaniu.
Lista pól
Gdy wysyłasz prośbę o informacje o miejscu, musisz określić dane, które mają być zwracane w obiekcie GMSPlace
dla tego miejsca, jako maskę pola. Aby zdefiniować maskę pola, przekaż tablicę wartości z GMSPlaceProperty
do obiektu GMSFetchPlaceRequest
.
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 wywołują Place Details Essentials ID Only SKU:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotos
Te pola wywołują podstawowy SKU szczegółów miejsca:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewport
Te pola wywołują SKU Szczegóły miejsca Pro:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrance
Te pola wywołują SKU Szczegóły miejsca Pro:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Te pola wywołują kod SKU Szczegóły miejsca w wersji Enterprise:
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 pola name
i placeID
:
Pakiet SDK Miejsc w Swift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
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];
Parametry opcjonalne
Aby określić parametry opcjonalne, użyj obiektu GMSFetchPlaceRequest
.
regionCode
Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Ten parametr może też wpływać na wyniki wyszukiwania. Nie ma wartości domyślnej.
Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodem regionu, kod kraju jest pomijany w adresie.
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.
sessionToken
Tokeny sesji to wygenerowane przez użytkownika ciągi znaków, które śledzą wywołania Autocomplete (New) jako „sesje”. Autouzupełnianie (nowe) używa tokenów sesji do grupowania faz zapytania i wyboru miejsca w wyszukiwaniu autouzupełniania użytkownika w osobnej sesji na potrzeby rozliczeń. Tokeny sesji są przekazywane do wywołań Place Details (New), które następują po wywołaniach Autocomplete (New). Więcej informacji znajdziesz w artykule Tokeny sesji.
Wyświetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane z GMSPlacesClient
, np. zdjęcia i opinie, musi też wyświetlać wymagane atrybucje.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę maksymalnie 5 obiektów GMSPlaceReview
. Każdy obiekt GMSPlaceReview
może zawierać atrybucje i atrybucje autora.
Jeśli wyświetlasz opinię w aplikacji, musisz też wyświetlać informacje o autorze lub atrybucję.
Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.