Pakiet Places SDK na iOS zapewnia szczegółowe informacje o miejscach, w tym nazwę i adres miejsca, położenie geograficzne podane jako współrzędne geograficzne, rodzaj miejsca (np. klub nocny, sklep zoologiczny i muzeum). Aby uzyskać dostęp do tych informacji dla określonego miejsca, możesz użyć identyfikatora miejsca – stabilnego identyfikatora, który jednoznacznie identyfikuje miejsce.
Szczegóły miejsca
Klasa GMSPlace
zawiera informacje o konkretnym miejscu. Obiekt GMSPlace
możesz zablokować na kilka sposobów:
- Zadzwoń pod numer
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
. Tutaj znajdziesz przewodnik. - Wywołaj
GMSPlacesClient fetchPlaceFromPlaceID:
, przekazującGMSPlaceField
, identyfikator miejsca i metodę wywołania zwrotnego. W przypadku żądań informacji o miejscach, jeśli nie określisz co najmniej 1 pola w żądaniu lub pominiesz parametrfields
w żądaniu, zwrócone zostaną wszystkie możliwe pola, co spowoduje naliczenie odpowiednich opłat. Zajrzyj do przewodnika, aby znaleźć miejsce na podstawie identyfikatora.
Przesyłając prośbę o miejsce, musisz określić, jakie typy danych tego miejsca chcesz zwrócić. Aby to zrobić, przekaż GMSPlaceField
, określając typy danych do zwrócenia. Jest to ważna kwestia, ponieważ wpływa na koszt dla każdego żądania.
Wyniki wyszukiwania danych miejsc nie mogą być puste, dlatego zwracane są tylko wyniki miejsc z danymi (na przykład jeśli żądane miejsce nie zawiera zdjęć, w wyniku nie będzie pola photos
).
Ten przykład przekazuje listę 2 wartości pól, aby określić dane zwracane 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);
Dowiedz się więcej o polach miejsc. Więcej informacji o rozliczeniu żądań danych o miejscach znajdziesz w artykule Użycie i płatności.
Klasa GMSPlace
może zawierać te dane miejsca:
name
– nazwa miejsca;placeID
– identyfikator tekstowy miejsca. Więcej informacji o identyfikatorach miejsc znajdziesz w dalszej części strony.coordinate
– położenie geograficzne miejsca określone jako współrzędne geograficzne.phoneNumber
– numer telefonu miejsca w międzynarodowym formacie.formattedAddress
– czytelny dla człowieka adres tej lokalizacji.Często jest to odpowiednik adresu pocztowego. Pamiętaj, że niektóre kraje, takie jak Wielka Brytania, nie zezwalają na rozpowszechnianie prawdziwych adresów pocztowych ze względu na ograniczenia licencyjne.
Sformatowany adres składa się z co najmniej 1 komponentu. Na przykład adres „111 8th Avenue, New York, NY” składa się z tych elementów: „111” (numer domu), „8th Avenue” (trasa), „Nowy Jork” (miasto) i „NY” (stan USA).
Nie przetwarzaj sformatowanego adresu automatycznie. Zamiast tego użyj poszczególnych komponentów adresu, które oprócz odpowiedzi na sformatowane pole adresu zawierają odpowiedź interfejsu API.
openingHours
– godziny otwarcia miejsca (według danych:GMSOpeningHours
). Zadzwoń pod numerGMSOpeningHours.weekdayText
, aby wyświetlić listę zlokalizowanych ciągów znaków otwarcia danego dnia. WywołajGMSOpeningHours.Periods
, aby wyświetlić listęGMSPeriod
z bardziej szczegółowymi informacjami odpowiadającymi danym podanym przezweekdayText
. Uwaga: jeśli miejsce jest zawsze otwarte, przedział czasu jest przedstawiony jako niedziela o północy, acloseEvent
ma wartość NULL.addressComponents
– tablica obiektówGMSAddressComponent
reprezentujących komponenty adresu miejsca. Komponenty są udostępniane w celu wyodrębnienia uporządkowanych informacji o adresie miejsca, np. o miejscu, w którym się ono znajduje. Nie używaj tych komponentów do formatowania adresu. Zamiast tego skorzystaj z właściwościformattedAddress
, która podaje zlokalizowany format adresu.Zwróć uwagę na te informacje o tablicy
addressComponents
:- Tablica komponentów adresu może zawierać więcej komponentów niż
formattedAddress
. - Tablica nie musi obejmować wszystkich jednostek politycznych zawierających adres, poza tymi wymienionymi w zasadzie
formattedAddress
. - Format odpowiedzi między różnymi żądaniami nie musi być taki sam. W szczególności liczba obiektów
addressComponents
różni się w zależności od żądanego adresu i może się zmieniać w czasie dla tego samego adresu. Komponent może zmieniać położenie tablicy. Typ komponentu może się zmienić. W odpowiedzi może brakować określonego komponentu.
- Tablica komponentów adresu może zawierać więcej komponentów niż
userRatingsTotal
– liczba opinii, które składają się na ocenę miejsca.
Klasa GMSPlace
zawiera te funkcje użytkowników:
isOpen
oblicza, czy dane miejsce jest otwarte w danym momencie na podstawie danychopeningHours
iUTCOffsetMinutes
oraz bieżącej daty i godziny.isOpenAtDate
oblicza, czy dane miejsce jest otwarte w danym dniu na podstawieopeningHours
iUTCOffsetMinutes
oraz bieżącej daty i godziny.
Jeśli używasz tych funkcji do pobierania godzin lub dat otwarcia, pierwotne żądanie fetchPlaceFromPlaceID:
lub findPlaceLikelihoodsFromUserLocationWithPlaceFields:
musi zawierać OBOTY GMSPlaceFieldOpeningHours
i GMSPlaceFieldUTCOffsetMinutes
. Jeśli brakuje któregoś z tych pól, wynikowy obiekt GMSPlace
nie będzie zawierać godzin otwarcia ani dat, a wywołanie zwróci wartość GMSPlaceOpenStatusUnknown
. Aby zapewnić dokładne wyniki, poproś o pola GMSPlaceFieldBusinessStatus
i GMSPlaceFieldUTCOffsetMinutes
w pierwotnym żądaniu miejsca. W razie braku prośby zakłada się, że firma działa.
isOpen
w przypadku szczegółów miejsca, obejrzyj ten film.
Pobierz miejsce według identyfikatora
Identyfikator miejsca to identyfikator tekstowy, który jednoznacznie identyfikuje miejsce. W pakiecie SDK Miejsc na iOS możesz pobrać identyfikator miejsca z obiektu GMSPlace
. Możesz zapisać identyfikator miejsca i użyć go do ponownego pobrania obiektu GMSPlace
.
Aby uzyskać miejsce według identyfikatora, wywołaj GMSPlacesClient
fetchPlaceFromPlaceID:
, przekazując te parametry:
- Ciąg znaków zawierający identyfikator miejsca.
- Jeden lub więcej elementów
GMSPlaceField
, które określają typy danych do zwrócenia. - Token sesji, jeśli wywołanie jest zakończone 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 obiekt GMSPlace
. Jeśli miejsce nie zostanie znalezione, obiekt miejsca jest pusty.
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świetlanie atrybucji w aplikacji
Gdy aplikacja wyświetla informacje uzyskane z GMSPlacesClient
lookUpPlaceID:callback:
, musi też zawierać informacje o jej atrybucji.
Zobacz dokumentację dotyczącą atrybucji.
Więcej informacji o identyfikatorach miejsc
Identyfikator miejsca używany w pakiecie Places SDK dla iOS jest taki sam jak identyfikator w Places API, Places SDK dla Androida i innych interfejsach Google API.
Każdy identyfikator miejsca może odnosić się tylko do jednego miejsca, ale jedno miejsce może mieć ich więcej.
W pewnych okolicznościach może być konieczne otrzymanie nowego identyfikatora miejsca. Może się tak na przykład zdarzyć, gdy firma przeprowadzi się do nowej lokalizacji.
Gdy poprosisz o miejsce, podając identyfikator miejsca, możesz mieć pewność, że w odpowiedzi zawsze znajdziesz to samo miejsce (jeśli dane miejsce nadal istnieje). Pamiętaj jednak, że odpowiedź może zawierać identyfikator miejsca inny niż identyfikator w prośbie.
Więcej informacji znajdziesz w opisie identyfikatora miejsca.