Pakiet Places SDK na iOS (nowość) dostarcza aplikacji rozbudowane informacje informacje o miejscach, w tym ich nazwę i adres, położenie geograficzne, lokalizacja określona za pomocą współrzędnych geograficznych, rodzaj miejsca (np. klub nocny, sklep zoologiczny, muzeum). Aby uzyskać dostęp do tych informacji dla konkretnego miejsca, możesz użyć identyfikatora miejsca, stałego identyfikatora, wskazuje miejsce.
Pobierz informacje o miejscu
GMSPlace
class zawiera informacje o konkretnym miejscu, w tym wszystkie pola danych pokazane w
Pola danych miejsc (nowe). Zdobądź
GMSPlace
obiekt przez wywołanie
GMSPlacesClient
fetchPlaceWithRequest:
,
przekazującego obiekt GMSFetchPlaceRequest
oraz
metoda wywołania zwrotnego typu
GMSPlaceResultCallback
.
Obiekt GMSFetchPlaceRequest
określa:
- (Wymagane) Identyfikator miejsca, czyli unikalny identyfikator miejsca w Miejscach Google. w bazie danych i w Mapach Google.
- (Wymagane) Lista pól do zwrócenia w obiekcie
GMSPlace
, tzw. maska pola zdefiniowana przezGMSPlaceProperty
Jeśli nie określisz co najmniej jednego pola na liście pól lub jeśli 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 (nowej).
Przesyłanie prośby o szczegóły miejsca
W tym przykładzie określamy miejsce za pomocą identyfikatora i przekazujemy następujące parametry:
- Identyfikator miejsca:
ChIJV4k8_9UodTERU5KXbkYpSYs
. - Lista pól określająca zwracanie nazwy miejsca i adresu URL witryny.
GMSPlaceResultCallback
obsługuje wynik.
Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując atrybut
GMSPlace
obiektu. Jeśli miejsce nie zostanie znalezione, obiekt miejsca ma wartość nil.
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); } }];
Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)
// 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 }
Odpowiedź dotycząca szczegółów miejsca
Szczegóły miejsca zwraca
GMSPlace
obiekt ze szczegółowymi informacjami o tym miejscu. W obiekcie GMSPlace
są wypełniane tylko pola określone na liście pól.
Pobieranie stanu otwartości
Obiekt GMSPlacesClient
zawiera funkcję członka o nazwie isOpenWithRequest
(isOpenRequest
w języku Swift i isPlaceOpenRequest
w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, zgodnie z czasem określonym w rozmowie.
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 Place z wymaganymi polami znajdziesz w artykule Szczegóły miejsca.
- Opcjonalny obiekt
NSDate
(Obj-C) lubDate
(Swift) określający godzinę, którą chcesz sprawdzić. Jeśli nie podasz żadnej godziny, domyślną wartością będzie 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 przekazujesz identyfikator miejsca, metoda używa GMSPlacesClient GMSFetchPlaceRequest:
do ich pobrania.
isOpenWithRequest
odpowiedź
isOpenWithRequest
zwraca obiekt GMSPlaceIsOpenResponse
zawierający wartość logiczną o nazwie status
, która wskazuje, czy firma jest otwarta, zamknięta, czy też jej stan jest nieznany.
Język | Wartość, jeśli otwarta | Wartość w przypadku zamknięcia | 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 usługę isOpenWithRequest
- Pola
GMSPlacePropertyUTCOffsetMinutes
iGMSPlacePropertyBusinessStatus
są naliczane w ramach podstawowego kodu SKU danych podstawowych. Pozostałe godziny otwarcia są naliczane w ramach kodu SKU szczegółów (zaawansowane). - Jeśli obiekt
GMSPlace
ma już te pola z poprzedniego żądania, nie naliczymy kolejnej opłaty.
Przykład: wysłanie żądania GMSPlaceIsOpenWithRequest
Przykład poniżej pokazuje, jak zainicjować obiekt GMSPlaceIsOpenWithRequest
w istniejącym 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
Użyj obiektu GMSFetchPlaceRequest
, aby określić wymagane parametry.
Identyfikator miejsca
Identyfikator miejsca używany w pakiecie SDK Miejsc na iOS to ten sam identyfikator, który jest używany w interfejsie Places API w pakiecie SDK Places dla Androida i innych interfejsów API Google. Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć ich więcej jeden identyfikator miejsca.
Istnieją okoliczności, które mogą spowodować, że dane miejsce otrzyma nowy identyfikator. Może się tak na przykład zdarzyć, gdy firma przeprowadzi się w nowe miejsce.
Zamawiając miejsce, podając jego identyfikator, masz pewność, że w odpowiedzi otrzymasz zawsze to samo miejsce (jeśli miejsce ). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca, który inny niż w prośbie.
Lista pól
W prośbie o podanie szczegółowych informacji o miejscu należy podać dane, które mają
zwracany dla obiektu GMSPlace
jako maska pola. Aby zdefiniować maskę pola
przekazać tablicę wartości z argumentu
GMSPlaceProperty
do obiektu GMSFetchPlaceRequest
.
Maskowanie pól to sprawdzona metoda projektowania, która pozwala uniknąć żądania zbędnych danych, które
pozwala uniknąć niepotrzebnego czasu przetwarzania i naliczania opłat.
Wypełnij co najmniej jedno z tych pól:
Te pola aktywują kod SKU szczegółów miejsca (tylko identyfikator):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
Te pola aktywują kod SKU szczegółów miejsca (tylko lokalizacja):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
Te pola aktywują kod SKU informacji o miejscu (podstawowe):
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
Te pola aktywują kod SKU szczegółów miejsca (zaawansowane):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Te pola aktywują kod SKU szczegółów miejsca (preferowany):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
Poniższy przykład przekazuje listę 2
wartości pól
aby wskazać, że obiekt GMSPlace
zwrócony przez żądanie zawiera
name
i placeID
pola:
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 Miejsc Swift na iOS (wersja przedpremierowa)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
Parametry opcjonalne
Aby określić opcjonalne parametry, użyj obiektu GMSFetchPlaceRequest
.
regionCode
Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu 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 kodu regionu, kod kraju został pominięty w adresie.
Większość kodów CLDR jest identyczna z kodami ISO 3166-1. z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to „uk” (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.
sessionToken
Tokeny sesji to generowane przez użytkownika ciągi znaków, które śledzą autouzupełnianie (Nowe) jako „sesje”. Autouzupełnianie (nowa wersja) używa tokenów sesji, aby grupować fazy zapytania i wyboru miejsca w autouzupełnianiu wyszukiwania użytkownika w oddzielną sesję na potrzeby rozliczeń. Tokeny sesji są przekazywane do szczegółów miejsca (nowe) połączeń, które są następstwem nowych połączeń autouzupełniania. Więcej informacji: Tokeny sesji.
Wyświetl atrybucję w swojej aplikacji
Kiedy aplikacja wyświetla informacje uzyskane z:
GMSPlacesClient
takich jak zdjęcia i opinie, aplikacja musi też wyświetlać wymagane informacje o źródłach.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę złożoną z maks. pięciu
GMSPlaceReview
.
obiektów. Każdy obiekt GMSPlaceReview
może zawierać informacje o atrybucji lub autorach.
Jeśli wyświetlasz opinię w aplikacji, musisz też podać informacje o autorze i pochodzeniu danych
o pochodzeniu danych.
Więcej informacji znajdziesz w dokumentacji na temat atrybucje.