Places SDK per iOS fornisce alla tua app informazioni dettagliate sui luoghi, tra cui nome e indirizzo, l'area geografica località specificata come coordinate di latitudine/longitudine, il tipo di luogo (ad esempio come discoteca, negozio di animali, museo e altro ancora. Per accedere a queste informazioni per un luogo specifico, puoi utilizzare l'ID luogo, un identificatore stabile che identifica un luogo.
Dettagli del luogo
La
GMSPlace
fornisce informazioni su un luogo specifico. Puoi ottenere
GMSPlace
nei modi seguenti:
- Chiama
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
Consulta la guida per trovare il luogo attuale. - Chiama
GMSPlacesClient fetchPlaceFromPlaceID:
, superandoGMSPlaceField
, un l'ID luogo e un metodo di callback. Per le richieste Place Details, se non specifica almeno un campo con una richiesta oppure se omettifields
di una richiesta, verranno restituiti TUTTI i campi possibili verranno fatturati di conseguenza. Consulta la guida per ricevere un luogo per ID.
Quando richiedi un luogo, devi specificare i tipi di dati relativi ai luoghi da
per tornare indietro. Per farlo, passa un valore GMSPlaceField
, specificando i dati
tipi da restituire. Questo è un aspetto importante, in quanto influirà
per ogni richiesta.
Perché i risultati dei dati sui luoghi non possono essere vuoti, ma solo luogo
vengono restituiti risultati con dati (ad esempio, se un luogo richiesto non ha
foto, il campo photos
non sarà presente nel risultato).
L'esempio seguente trasmette un elenco di due valori di campo per specificare i dati restituiti da una richiesta:
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);
Scopri di più su campi del luogo. Per maggiori informazioni informazioni su come vengono fatturate le richieste di dati di Place, vedi Utilizzo e fatturazione.
La
GMSPlace
può contenere i seguenti dati sui luoghi:
name
- Il nome del luogo.editorialSummary
: fornisce una semplice descrizione di un luogo.placeID
- L'identificatore testuale del luogo. Letto scopri di più sugli ID luogo nel resto di questa pagina.coordinate
: la posizione geografica del luogo, specificate come coordinate di latitudine e longitudine.phoneNumber
– Il numero di telefono del luogo, in formato internazionale.formattedAddress
- L'indirizzo leggibile di questa in ogni località.Spesso, questo indirizzo equivale all'indirizzo postale. Tieni presente che alcune paesi, come il Regno Unito, non consentono la distribuzione di veri e propri indirizzi postali a causa di limitazioni di licenza.
L'indirizzo formattato è logicamente composto da uno o più indirizzi componenti. Ad esempio, l'indirizzo "111 8th Avenue, New York, NY" è costituito dai seguenti componenti: "111" (il numero civico), "8th Avenue" (il percorso), "New York" (la città) e "NY" (stato USA).
Non analizzare l'indirizzo formattato in modo programmatico. Dovresti invece usare i singoli componenti dell'indirizzo, che la risposta dell'API include in aggiunta nel campo dell'indirizzo formattato.
openingHours
- Gli orari di apertura del luogo (come rappresentato daGMSOpeningHours
). ChiamaGMSOpeningHours.weekdayText
per ottenere un elenco di stringhe localizzate degli orari di apertura giornalieri della settimana. Chiama il numeroGMSOpeningHours.Periods
per restituire un elenco diGMSPeriod
con informazioni più dettagliate equivalenti ai dati forniti daweekdayText
. Nota: se un luogo è sempre aperto, il periodo di tempo è rappresentato come Domenica a mezzanotte e il valorecloseEvent
è nullo.currentOpeningHours
esecondaryOpeningHours
: campi che vanno incontro a festività e cambiamenti temporanei degli orari di un luogo.addressComponents
: un array diGMSAddressComponent
oggetti che rappresentano i componenti per un luogo. Questi componenti vengono forniti allo scopo di estrarre informazioni strutturate sull'indirizzo di un luogo, ad esempio trovare la città in cui si trova un luogo. Non utilizzare questi componenti per la formattazione degli indirizzi; usa l'formattedAddress
che fornisce un indirizzo localizzato formattato.Prendi nota delle seguenti informazioni su
addressComponents
array:- L'array dei componenti dell'indirizzo può contenere più componenti rispetto
formattedAddress
. - L'array non include necessariamente tutte le entità politiche
contenere un indirizzo, diverso da quelli inclusi nei
formattedAddress
. - Non è garantito che il formato della risposta rimanga lo stesso tra
richieste. In particolare, il numero di
addressComponents
varia in base all'indirizzo richiesto e può cambiare nel tempo in base all'indirizzo nello stesso indirizzo. Un componente può cambiare posizione nell'array. Il tipo di componente può cambiare. Un particolare componente può essere mancante in una risposta successiva.
- L'array dei componenti dell'indirizzo può contenere più componenti rispetto
userRatingsTotal
: rappresenta il numero di recensioni che costituiscono la valutazione del luogo.
La
GMSPlace
contiene le seguenti funzioni membro:
-
isOpen
calcola se un luogo è aperto in un determinato momento, in base aopeningHours
eUTCOffsetMinutes
, e la data e l'ora correnti. isOpenAtDate
calcola se un luogo è aperto in una determinata data, in base aopeningHours
eUTCOffsetMinutes
, e la data e l'ora correnti.
Quando utilizzi queste funzioni per ottenere gli orari di apertura e/o le date, l'originale
fetchPlaceFromPlaceID:
o findPlaceLikelihoodsFromUserLocationWithPlaceFields:
la richiesta deve specificare SIA GMSPlaceFieldOpeningHours
che GMSPlaceFieldUTCOffsetMinutes
campi. Se manca uno di questi campi, viene restituito l'elemento GMSPlace
non conterrà orari o date di apertura e la chiamata restituirà
GMSPlaceOpenStatusUnknown
. Per garantire risultati precisi, richiedi
GMSPlaceFieldBusinessStatus
e GMSPlaceFieldUTCOffsetMinutes
nella richiesta di luogo originale. Se non richiesto, si presume che
se l'attività è operativa.
isOpen
con Place Details.
Ottieni orari eccezionali
L'orario di apertura regolare è disponibile fino aopeningHours
, currentOpeningHours
e secondaryOpeningHours
, l'assistenza è disponibile in caso di ferie e modifiche temporanee agli orari.
Gli orari eccezionali per questi giorni speciali possono essere filtrati e presentati, se disponibili.
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 } }
Ottieni un luogo tramite ID
Un ID luogo è un identificatore testuale che identifica in modo univoco un luogo. Nella
Places SDK per iOS, puoi recuperare l'ID di un luogo da una
GMSPlace
. Puoi memorizzare l'ID luogo e utilizzarlo per recuperare il
GMSPlace
di nuovo in seguito.
Per ottenere un luogo tramite ID, chiama
GMSPlacesClient
fetchPlaceFromPlaceID:
, passando i seguenti parametri:
- Una stringa contenente un ID luogo.
- Uno o più
GMSPlaceField
, che specificano i tipi di dati da restituire. - Un token di sessione se viene effettuata la chiamata per concludere una query di completamento automatico. Altrimenti, ignora.
- Un
GMSPlaceResultCallback
per gestire il risultato.
L'API richiama il metodo di callback specificato, passando un
GMSPlace
. Se il luogo non viene trovato, l'oggetto luogo è nullo.
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]); } }];
Attribuzioni display nell'app
Quando la tua app mostra informazioni ottenute da
GMSPlacesClient
lookUpPlaceID:callback:
, l'app deve mostrare anche le attribuzioni.
Consulta la documentazione su
attribuzioni.
Scopri di più sugli ID luogo
L'ID luogo utilizzato in Places SDK per iOS è lo stesso di utilizzata nel API Places, SDK Places per Android e altre API di Google.
Ogni ID luogo può fare riferimento a un solo luogo, ma un singolo luogo può averne più di di un ID luogo.
In alcuni casi, un luogo può ottenere un nuovo ID luogo. Ad esempio, questo può accadere se un'attività si sposta in una nuova sede.
Quando richiedi un luogo specificando un ID luogo, hai la certezza che riceverai sempre lo stesso punto nella risposta (se il luogo esiste già). Tieni presente, tuttavia, che la risposta potrebbe contenere un ID luogo che diverso da quello indicato nella tua richiesta.
Per ulteriori informazioni, consulta panoramica di Place ID.