Pakiet SDK Places na iOS dostarcza Twojej aplikacji bogate 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.
Informacje o miejscu
GMSPlace
Classroom zawiera informacje o konkretnym miejscu. Możesz zdobyć
GMSPlace
możesz użyć w następujący sposób:
- Zadzwoń do nas
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
Zobacz przewodnik uzyskać aktualne miejsce. - Zadzwoń do nas
GMSPlacesClient fetchPlaceFromPlaceID:
, zaliczającGMSPlaceField
, identyfikator miejsca i metodę wywołania zwrotnego. W przypadku próśb o informacje o miejscu, jeśli nie określ co najmniej jedno pole z żądaniem lub jeśli pominieszfields
z żądania, zostaną zwrócone WSZYSTKIE możliwe pola i zostanie wyświetlony będą naliczane odpowiednie opłaty. Przeczytaj przewodnik, jak uzyskać miejsca według identyfikatora.
W żądaniu danego miejsca należy podać typy danych o miejscu,
. Aby to zrobić, przekaż GMSPlaceField
, określając dane
typy do zwrócenia. Jest to ważne, ponieważ będzie to miało wpływ
za każde żądanie.
Ponieważ wyniki z danymi o miejscach nie mogą być puste, należy jedynie wstawić
zwracane są wyniki z danymi (na przykład jeśli żądane miejsce nie ma wartości
zdjęć, w wyniku nie będzie pola photos
).
Ten przykład przekazuje listę 2 wartości pól. w celu określenia danych zwracanych przez żądanie:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
Więcej informacji o pola miejsc. Więcej informacje na temat sposobu rozliczania żądań danych o miejscach, zobacz Korzystanie i rozliczenia.
GMSPlace
class może zawierać następujące dane o miejscu:
name
– nazwa miejsca.editorialSummary
– prosty opis miejsca.placeID
– tekstowy identyfikator miejsca. Odczytano o identyfikatorach miejsc znajdziesz w dalszej części tej strony.coordinate
– lokalizacja geograficzna miejsca, określane za pomocą współrzędnych geograficznych.phoneNumber
– numer telefonu miejsca w w formacie międzynarodowym.formattedAddress
– czytelny dla człowieka adres lokalizacji.Adres ten jest często odpowiednikiem adresu pocztowego. Pamiętaj, że niektóre takich jak Wielka Brytania, nie zezwalają na dystrybucję prawdziwego adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres składa się logicznie z jednego lub wielu adresów . Na przykład adres „ul. Polna 13, Warszawa” składa się z następujących komponentów: „111” (numer domu), „Ósma Aleja” (trasa), „Nowy Jork” (miasto) i „NY” (stan w USA).
Nie analizuj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych składników adresu, które zawiera odpowiedź interfejsu API do sformatowanego pola adresu.
openingHours
– godziny otwarcia miejsca (np. reprezentowane przez:GMSOpeningHours
). Zadzwoń do nasGMSOpeningHours.weekdayText
, aby uzyskać listę zlokalizowanych ciągów znaków w godzinach pracy w danym tygodniu. Zadzwoń pod numerGMSOpeningHours.Periods
by zwrócić listę elementów typuGMSPeriod
z bardziej szczegółowymi informacjami co odpowiada danym dostarczonym przezweekdayText
. Uwaga: jeśli miejsce jest zawsze otwarte, okres jest przedstawiany jako Niedziela o północy, acloseEvent
ma wartość null.currentOpeningHours
isecondaryOpeningHours
– pola, które odnoszą się do urlopu, oraz tymczasowe zmiany w harmonogramie dotyczące danego miejsca.addressComponents
– tablica zGMSAddressComponent
obiektów reprezentujących komponenty adresu miejsca. Te komponenty są udostępniane, aby: wyodrębnianie uporządkowanych informacji o adresie miejsca, np. znalezienie miasta, w którym znajduje się dane miejsce. Nie używaj tych komponentów do formatowania adresu; zamiast tego użyj funkcjiformattedAddress
która zapewnia zlokalizowany adres w formacie.Zwróć uwagę na te informacje na temat:
addressComponents
tablica:- Tablica komponentów adresu może zawierać więcej komponentów niż
formattedAddress
- Tablica nie musi obejmować wszystkich podmiotów politycznych, które
zawierają adres, oprócz tych zawartych w tagu
formattedAddress
- Nie ma gwarancji, że format odpowiedzi będzie taki sam
żądań. W szczególności chodzi o liczbę
addressComponents
zmienia się w zależności od żądanego adresu i może się zmieniać pod tym samym adresem. Komponent może zmienić pozycję w tablicy. Typ komponentu może się zmienić. Konkretnym komponentem może być których brakuje w późniejszej odpowiedzi.
- Tablica komponentów adresu może zawierać więcej komponentów niż
userRatingsTotal
– określa, z ilu opinii składa się liczba opinii; ocenę miejsca.
GMSPlace
class zawiera następujące funkcje składowe:
-
isOpen
oblicza, czy dane miejsce jest w danym czasie otwarte, na podstawieopeningHours
orazUTCOffsetMinutes
, oraz bieżącą datę i godzinę. isOpenAtDate
określa, czy miejsce jest otwarte w danym dniu, na podstawieopeningHours
orazUTCOffsetMinutes
, oraz bieżącą datę i godzinę.
Przy użyciu tych funkcji do uzyskania godzin otwarcia lub dat otwarcia
fetchPlaceFromPlaceID:
lub findPlaceLikelihoodsFromUserLocationWithPlaceFields:
żądanie musi określać BOTH GMSPlaceFieldOpeningHours
i GMSPlaceFieldUTCOffsetMinutes
. Jeśli brakuje któregoś z tych pól, wynikowy GMSPlace
nie będzie zawierać godzin ani dat otwarcia, a wywołanie zwróci
GMSPlaceOpenStatusUnknown
Aby uzyskać dokładne wyniki, poproś
GMSPlaceFieldBusinessStatus
i GMSPlaceFieldUTCOffsetMinutes
tych pól w pierwotnym żądaniu miejsca. Jeśli żądanie nie zostanie wysłane, przyjmuje się, że
firma funkcjonuje.
isOpen
z informacjami o miejscu.
Uzyskaj wyjątkowe godziny
Standardowe godziny otwarcia obowiązują doopeningHours
, a currentOpeningHours
i secondaryOpeningHours
obsługują zmiany w harmonogramie świątecznym i tymczasowe.
Możesz przefiltrować i wyświetlić niestandardowe godziny otwarcia w te dni, jeśli są dostępne.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Znajdź miejsce na podstawie identyfikatora
Identyfikator miejsca to identyfikator tekstowy jednoznacznie identyfikujący miejsce. W
SDK Miejsc na iOS można pobrać identyfikator miejsca z
GMSPlace
obiektu. Można zapisać identyfikator miejsca i użyć go do pobrania
GMSPlace
możesz zobaczyć go później.
Aby uzyskać miejsce na podstawie identyfikatora, zadzwoń pod numer
GMSPlacesClient
fetchPlaceFromPlaceID:
, przekazując te parametry:
- Ciąg tekstowy zawierający identyfikator miejsca.
- Co najmniej jeden element typu
GMSPlaceField
, określający typy danych do zwrócenia. - Token sesji, jeśli nastąpi wywołanie w celu zakończenia zapytania autouzupełniania. W przeciwnym razie przekaż nil.
GMSPlaceResultCallback
do obsługi wyniku.
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 fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Wyświetl atrybucję w swojej aplikacji
Kiedy aplikacja wyświetla informacje uzyskane z:
GMSPlacesClient
lookUpPlaceID:callback:
, aplikacja musi też wyświetlać informacje o źródłach.
Zobacz dokumentację na stronie
atrybucje.
Więcej informacji o identyfikatorach miejsc
Identyfikator miejsca używany w pakiecie SDK Miejsc dla iOS jest taki sam jak identyfikator używane w Places API, Places SDK na 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.
Więcej informacji: omówienie identyfikatora miejsca.