Pakiet SDK Miejsc na iOS (nowy) udostępnia aplikacji bogate informacje o miejscach, w tym nazwę i adres miejsca, lokalizację geograficzną określoną jako współrzędne geograficzne, typ miejsca (np. klub nocny, sklep zoologiczny, muzeum) i inne. Aby uzyskać dostęp do tych informacji o konkretnym miejscu, możesz użyć identyfikatora miejsca, czyli stałego identyfikatora, który jednoznacznie identyfikuje miejsce.
Pobieranie informacji o miejscu
Klasa
GMSPlace
zawiera informacje o konkretnym miejscu, w tym wszystkie pola danych widoczne w
sekcji Pola danych o miejscach (nowe). Aby uzyskać obiekt
GMSPlace
, wywołaj metodę
GMSPlacesClient
fetchPlaceWithRequest:,
przekazując obiekt GMSFetchPlaceRequest i metodę wywołania zwrotnego typu
GMSPlaceResultCallback.
Obiekt GMSFetchPlaceRequest określa:
- (Wymagane) Identyfikator miejsca, czyli unikalny identyfikator miejsca w bazie danych Miejsc Google i na Mapach Google.
- (Wymagane) Listę pól, które mają zostać zwrócone w obiekcie
GMSPlace, nazywaną też maską pola, zgodnie z definicjąGMSPlaceProperty. Jeśli nie określisz co najmniej 1 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 informacji o miejscu
Ten przykład pobiera miejsce według identyfikatora, przekazując te parametry:
- Identyfikator miejsca
ChIJV4k8_9UodTERU5KXbkYpSYs. - Lista pól określająca, że mają zostać zwrócone nazwa miejsca i adres URL witryny.
- A
GMSPlaceResultCallbackdo obsługi wyniku.
Interfejs API wywołuje określoną metodę wywołania zwrotnego, przekazując
GMSPlace
obiekt. Jeśli miejsce nie zostanie znalezione, obiekt miejsca będzie miał wartość nil.
Pakiet SDK Miejsc na 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ź z informacjami o miejscu
Informacje o miejscu zwracają obiekt
GMSPlace zawierający szczegółowe informacje o miejscu. W obiekcie GMSPlace są wypełniane tylko te pola, które zostały 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 1 argument typu GMSPlaceIsOpenWithRequest, który zawiera:
- Obiekt
GMSPlacelub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu miejsca z wymaganymi polami znajdziesz w sekcji Informacje o miejscu.
- Opcjonalny
NSDate(Obj-C) lubDate(Swift) obiekt określający czas, który chcesz sprawdzić. Jeśli nie określisz czasu, domyślnie zostanie użyty bieżący czas. - Metoda
GMSPlaceOpenStatusResponseCallbackdo obsługi odpowiedzi. >
Metoda GMSPlaceIsOpenWithRequest wymaga ustawienia tych pól w obiekcie GMSPlace:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
Jeśli te pola nie są podane w obiekcie miejsca lub jeśli przekażesz identyfikator miejsca, metoda użyje GMSPlacesClient GMSFetchPlaceRequest: do ich pobrania.
Odpowiedź isOpenWithRequest
isOpenWithRequest zwraca obiekt GMSPlaceIsOpenResponse zawierający wartość logiczną o nazwie status, która wskazuje, czy firma jest otwarta, zamknięta, czy też stan jest nieznany.
| Język | Wartość, jeśli miejsce jest otwarte | Wartość, jeśli miejsce jest zamknięte | Wartość, jeśli stan jest nieznany |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
Płatności za isOpenWithRequest
- Pola
GMSPlacePropertyUTCOffsetMinutesiGMSPlacePropertyBusinessStatussą rozliczane w ramach jednostki SKU Podstawowe dane. Pozostałe godziny otwarcia są rozliczane w ramach jednostki SKU Informacje o miejscu w wersji Enterprise. - Jeśli obiekt
GMSPlacejuż zawiera te pola z poprzedniego żądania, nie zostaną naliczone dodatkowe opłaty.
Przykład: wysyłanie żądania GMSPlaceIsOpenWithRequest
Ten przykład pokazuje, jak zainicjować GMSPlaceIsOpenWithRequest w istniejącym obiekcie GMSPlace.
Pakiet SDK Miejsc na 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 SDK Miejsc na iOS jest taki sam jak identyfikator używany w interfejsie Places API, pakiecie SDK Miejsc na Androida i innych interfejsach API Google. Każdy identyfikator miejsca może odwoływać się tylko do 1 miejsca, ale 1 miejsce może mieć więcej niż 1 identyfikator.
W pewnych okolicznościach miejsce może otrzymać nowy identyfikator. Może się to 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 prosisz o informacje o miejscu, musisz określić dane, które mają zostać zwrócone 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 pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.
Określ co najmniej 1 z tych pól:
Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Essentials – tylko identyfikator:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).
Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Essentials:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).
Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Pro:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrancePełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).
Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Pro:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsitePełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).
Te pola aktywują jednostkę SKU Informacje o miejscu w wersji Enterprise:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutPełną listę pól i powiązanych z nimi jednostek SKU znajdziesz w sekcji Pola danych o miejscach (nowe).
Ten przykład przekazuje listę 2
wartości pól
aby określić, że obiekt GMSPlace zwrócony przez żądanie zawiera pola
name i placeID:
Pakiet SDK Miejsc na 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 2-znakowa 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 pasuje do kodu 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 ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla jednostki „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki na podstawie obowiązujących przepisów.
sessionToken
Tokeny sesji to generowane przez użytkownika ciągi znaków, które śledzą wywołania autouzupełniania (nowego) jako „sesje”. Autouzupełnianie (nowe) używa tokenów sesji do grupowania fazy zapytania i wyboru miejsca w wyszukiwaniu autouzupełniania użytkownika w oddzielną sesję na potrzeby rozliczeń. Tokeny sesji są przekazywane do wywołań informacji o miejscu (nowych), które następują po wywołaniach autouzupełniania (nowego). Więcej informacji znajdziesz w sekcji Tokeny sesji.
Wyświetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane z
GMSPlacesClient,
takie jak zdjęcia i opinie, musi też wyświetlać wymagane atrybucje.
Na przykład właściwość reviews obiektu GMSPlacesClient
zawiera tablicę maksymalnie 5
GMSPlaceReview
obiektów. Każdy obiekt GMSPlaceReview może zawierać atrybucje i atrybucje autora.
Jeśli wyświetlasz opinię w aplikacji, musisz też wyświetlić atrybucję lub atrybucję autora.
Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.