Places SDK for iOS (New) fornisce alla tua app informazioni dettagliate sui luoghi, tra cui il nome e l'indirizzo del luogo, la posizione geografica specificata come coordinate di latitudine/longitudine, il tipo di luogo (ad esempio night club, 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 in modo univoco un luogo.
Visualizzare i dettagli del luogo
La
GMSPlace
classe contiene informazioni su un luogo specifico, inclusi tutti i campi di dati mostrati in
Campi di dati del luogo (New). Recupera un
GMSPlace
oggetto chiamando
GMSPlacesClient
fetchPlaceWithRequest:,
passando un GMSFetchPlaceRequest oggetto e un
metodo di callback di tipo
GMSPlaceResultCallback.
L'oggetto GMSFetchPlaceRequest specifica:
- (Obbligatorio) L'ID luogo, un identificatore univoco per un luogo nel database di Google Places database e su Google Maps.
- (Obbligatorio) L'elenco dei campi da restituire nell'oggetto
GMSPlace, chiamato anche maschera di campo, come definito daGMSPlaceProperty. Se non specifichi almeno un campo nell'elenco dei campi o se ometti l'elenco dei campi, la chiamata restituisce un errore. - (Facoltativo) Il codice regione utilizzato per formattare la risposta.
- (Facoltativo) Il token di sessione utilizzato per terminare una sessione Autocomplete (New).
Inviare una richiesta Places Details
Questo esempio recupera un luogo per ID, passando i seguenti parametri:
- L'ID luogo di
ChIJV4k8_9UodTERU5KXbkYpSYs. - Un elenco di campi che specifica di restituire il nome del luogo e l'URL del sito web.
- Un
GMSPlaceResultCallbackper gestire il risultato.
L'API richiama il metodo di callback specificato, passando un
GMSPlace
oggetto. Se il luogo non viene trovato, l'oggetto luogo è nil.
Places SDK for 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); } }];
Risposta Places Details
Places Details restituisce un
GMSPlace oggetto contenente i dettagli del luogo. Nell'oggetto GMSPlace vengono compilati solo i campi specificati nell'elenco dei campi.
Visualizzare lo stato di apertura
L'oggetto GMSPlacesClient contiene una funzione membro chiamata isOpenWithRequest (isOpenRequest in Swift e isPlaceOpenRequest in GooglePlacesSwift) che restituisce una risposta che indica se il luogo è attualmente aperto, in base all'ora specificata nella chiamata.
Questo metodo accetta un singolo argomento di tipo GMSPlaceIsOpenWithRequest che contiene:
- Un oggetto
GMSPlaceo una stringa che specifica un ID luogo. Per saperne di più sulla creazione dell'oggetto luogo con i campi necessari, vedi Dettagli del luogo.
- Un oggetto
NSDate(Obj-C) oDate(Swift) facoltativo che specifica l'ora che vuoi controllare. Se non viene specificata un'ora, il valore predefinito è ora. - Un metodo
GMSPlaceOpenStatusResponseCallbackper gestire la risposta. >
Il metodo GMSPlaceIsOpenWithRequest richiede che i seguenti campi siano impostati nell'oggetto GMSPlace:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
Se questi campi non vengono forniti nell'oggetto luogo o se passi un ID luogo, il metodo utilizza GMSPlacesClient GMSFetchPlaceRequest: per recuperarli.
Risposta isOpenWithRequest
isOpenWithRequest restituisce un oggetto GMSPlaceIsOpenResponse contenente un valore booleano denominato status che indica se l'attività è aperta, chiusa o se lo stato è sconosciuto.
| Lingua | Valore se aperto | Valore se chiuso | Valore se lo stato è sconosciuto |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
Fatturazione per isOpenWithRequest
- I campi
GMSPlacePropertyUTCOffsetMinuteseGMSPlacePropertyBusinessStatusvengono addebitati in base allo SKU Dati di base. Il resto degli orari di apertura viene addebitato in base allo SKU Place Details Enterprise. - Se l'oggetto
GMSPlaceha già questi campi da una richiesta precedente, non ti verrà addebitato alcun costo.
Esempio: inviare una richiesta GMSPlaceIsOpenWithRequest
L'esempio seguente mostra come inizializzare un GMSPlaceIsOpenWithRequest all'interno di un oggetto GMSPlace esistente.
Places SDK for 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 } }];
Parametri obbligatori
Utilizza l'oggetto GMSFetchPlaceRequest per specificare i parametri obbligatori.
ID luogo
L'ID luogo utilizzato in Places SDK for iOS è lo stesso identificatore utilizzato in API Places, Places SDK for Android e altre API di Google. Ogni ID luogo può fare riferimento a un solo luogo, ma un singolo luogo può avere più di un ID luogo.
In alcune circostanze, un luogo potrebbe ricevere un nuovo ID luogo. Ad esempio, ciò può accadere se un'attività si trasferisce in una nuova sede.
Quando richiedi un luogo specificando un ID luogo, puoi essere certo di ricevere sempre lo stesso luogo nella risposta (se il luogo esiste ancora). Tieni presente, tuttavia, che la risposta potrebbe contenere un ID luogo diverso da quello della tua richiesta.
Elenco dei campi
Quando richiedi i dettagli del luogo, devi specificare i dati da restituire nell'oggetto GMSPlace per il luogo come maschera di campo. Per definire la maschera di campo, passa un array di valori da GMSPlaceProperty all'oggetto GMSFetchPlaceRequest.
L'applicazione della maschera di campo è una buona pratica di progettazione per assicurarti di non richiedere dati non necessari, il che aiuta a evitare tempi di elaborazione e addebiti di fatturazione non necessari.
Specifica uno o più dei seguenti campi:
I seguenti campi attivano lo SKU Place Details Essentials ID Only:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosPer un elenco completo dei campi e degli SKU associati, vedi Campi di dati del luogo (New).
I seguenti campi attivano lo SKU Place Details Essentials:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportPer un elenco completo dei campi e degli SKU associati, vedi Campi di dati del luogo (New).
I seguenti campi attivano lo SKU Place Details Pro:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrancePer un elenco completo dei campi e degli SKU associati, vedi Campi di dati del luogo (New).
I seguenti campi attivano lo SKU Place Details Pro:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsitePer un elenco completo dei campi e degli SKU associati, vedi Campi di dati del luogo (New).
I seguenti campi attivano lo SKU Place Details Enterprise:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutPer un elenco completo dei campi e degli SKU associati, vedi Campi di dati del luogo (New).
L'esempio seguente passa un elenco di due
valori di campo
per specificare che l'oggetto GMSPlace restituito da una richiesta contiene i campi
name e placeID:
Places SDK for 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];
Parametri facoltativi
Utilizza l'oggetto GMSFetchPlaceRequest per specificare i parametri facoltativi.
regionCode
Il codice regione utilizzato per formattare la risposta, specificato come valore del codice CLDR di due caratteri. Questo parametro può anche avere un effetto di bias sui risultati di ricerca. Non esiste un valore predefinito.
Se il nome del paese del campo indirizzo nella risposta corrisponde al codice regione, il codice paese viene omesso dall'indirizzo.
La maggior parte dei codici CLDR è identica ai codici ISO 3166-1, con alcune eccezioni importanti. Ad esempio, il ccTLD del Regno Unito è "uk" (.co.uk), mentre il suo codice ISO 3166-1 è "gb" (tecnicamente per l'entità "Regno Unito di Gran Bretagna e Irlanda del Nord"). Il parametro può influire sui risultati in base alla legge applicabile.
sessionToken
I token di sessione sono stringhe generate dall'utente che monitorano le chiamate Autocomplete (New) come "sessioni". Autocomplete (New) utilizza i token di sessione per raggruppare le fasi di query e selezione del luogo di una ricerca di completamento automatico dell'utente in una sessione discreta a fini di fatturazione. I token di sessione vengono passati alle chiamate Place Details (New) che seguono le chiamate Autocomplete (New). Per saperne di più, vedi Token di sessione.
Mostrare le attribuzioni nell'app
Quando l'app mostra informazioni ottenute da
GMSPlacesClient,
come foto e recensioni, deve mostrare anche le attribuzioni richieste.
Ad esempio, la proprietà reviews dell'oggetto GMSPlacesClient
contiene un array di un massimo di cinque
GMSPlaceReview
oggetti. Ogni oggetto GMSPlaceReview può contenere attribuzioni e attribuzioni dell'autore.
Se mostri la recensione nella tua app, devi mostrare anche qualsiasi attribuzione o attribuzione dell'autore.
Per saperne di più, consulta la documentazione sulle attribuzioni.