Con Places SDK per iOS, puoi scoprire dove si trova attualmente il dispositivo. vale a dire il punto in cui si trova la posizione attualmente segnalata del dispositivo. Alcuni esempi di luoghi includono attività locali, punti d'interesse e posizioni geografiche.
- Richiedere l'autorizzazione di accesso alla posizione
- Limiti di utilizzo
- Ottenere la posizione attuale
- Mostrare le attribuzioni nell'app
Richiesta di autorizzazione di accesso alla posizione
Se la tua app utilizza
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
,
deve richiedere l'autorizzazione per utilizzare i servizi di geolocalizzazione. Aggiungi la chiave NSLocationWhenInUseUsageDescription
al file Info.plist
per definire la stringa che informa l'utente del motivo per cui hai bisogno dei servizi di geolocalizzazione. Ad esempio:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Se vuoi chiamare
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
quando
l'app è in background, senza attivare una finestra di dialogo di conferma, svolgi
i passaggi che seguono prima di effettuare la chiamata:
- Aggiungi la chiave
NSLocationAlwaysUsageDescription
al fileInfo.plist
. - Chiama
requestAlwaysAuthorization
su qualsiasi istanza diCLLocationManager
prima di chiamare il metodo.
Richiedi l'autorizzazione a CLLocationManager
come segue:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Recupero della posizione corrente
Per trovare l'attività locale o un altro luogo in cui si trova attualmente il dispositivo, chiama GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Includi
i seguenti parametri:
- Uno o più
GMSPlaceField
che specificano i tipi di dati da restituire. Se ometti questo parametro, verranno restituiti TUTTI i campi possibili e l'addebito verrà effettuato di conseguenza. Questo vale solo per le richieste Place Details. - Un metodo di callback per gestire i risultati.
I campi corrispondono ai risultati di ricerca dei luoghi e sono suddivisi in tre categorie di fatturazione: di base, contatto e atmosfera. I campi di base vengono fatturati alla tariffa di base e non comportano costi aggiuntivi. I campi Contact e Atmosphere vengono fatturati a una tariffa più elevata. Per ulteriori informazioni su come vengono fatturate le richieste di dati dei luoghi, consulta Utilizzo e fatturazione.
L'API invoca il metodo di callback specificato, restituendo un array di oggetti
GMSPlaceLikelihood
.
Ogni oggetto
GMSPlaceLikelihood
rappresenta un luogo. Per ogni luogo, il risultato include un'indicazione della probabilità che si tratti del luogo giusto. Un valore più alto
indica una maggiore probabilità che il luogo sia la migliore corrispondenza. Il buffer potrebbe essere vuoto se non esiste un luogo noto corrispondente alla posizione del dispositivo.
Il seguente esempio di codice recupera l'elenco dei luoghi in cui è più probabile che si trovi il dispositivo e registra il nome e la probabilità per ogni luogo.
Swift
// Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: { (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let placeLikelihoodList = placeLikelihoodList { for likelihood in placeLikelihoodList { let place = likelihood.place print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)") print("Current PlaceID \(String(describing: place.placeID))") } } })
Objective-C
// Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (likelihoods != nil) { for (GMSPlaceLikelihood *likelihood in likelihoods) { GMSPlace *place = likelihood.place; NSLog(@"Current place name: %@", place.name); NSLog(@"Place ID: %@", place.placeID); } } }];
Note sui valori della probabilità:
- La probabilità fornisce una probabilità relativa che il luogo sia la migliore corrispondenza nell'elenco dei luoghi restituiti per una singola richiesta. Non puoi confrontare le probabilità di diverse richieste.
- Il valore della probabilità sarà compreso tra 0 e 1,0.
- La somma delle probabilità in un array restituito di oggetti
GMSPlaceLikelihood
è sempre inferiore o uguale a 1,0. Tieni presente che la somma non è necessariamente pari a 1,0.
Ad esempio, per rappresentare una probabilità del 55% che il luogo corretto sia il luogo A e una probabilità del 35% che sia il luogo B, l'array di probabilità ha due elementi: il luogo A con una probabilità di 0,55 e il luogo B con una probabilità di 0,35.
Visualizzazione delle attribuzioni nell'app
Quando l'app mostra informazioni ottenute da
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, deve anche mostrare le attribuzioni. Scopri di più sulle
attribuzioni.