Luogo attuale

Seleziona la piattaforma: Android iOS

Con Places SDK per iOS, puoi scoprire il luogo in cui dispositivo attualmente localizzato. Vale a dire che dal punto di accesso posizione segnalata al momento. Esempi di luoghi includono le attività locali, punti d'interesse e località geografiche.

  1. Richiedere l'autorizzazione di accesso alla posizione
  2. Limiti di utilizzo
  3. Ottenere la posizione attuale
  4. Attribuzioni display nell'app

Richiesta dell'autorizzazione di accesso alla posizione in corso...

Se la tua app utilizza GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, la tua app deve richiedere l'autorizzazione per usare i servizi di geolocalizzazione. Aggiungi il parametro NSLocationWhenInUseUsageDescription chiave per il tuo Info.plist , per definire la stringa che informa l'utente del motivo per cui hai bisogno della posizione i servizi di machine learning. Ad esempio:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

Se vuoi chiamare findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: quando che l'app sia in background senza che si attivi una finestra di dialogo di conferma, procedi nel seguente modo prima di effettuare la chiamata:

  1. Aggiungi la chiave NSLocationAlwaysUsageDescription al tuo Info.plistfile.
  2. Chiama requestAlwaysAuthorization su qualsiasi istanza di CLLocationManager 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 individuato, 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 la fatturazione avverrà 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 di luoghi e sono suddivisi in tre categorie di fatturazione: Base, contatto e ambiente. I campi di base vengono fatturati alla tariffa di base e non sono soggetti a addebiti. I campi Contact e Atmosphere vengono fatturati a una tariffa superiore. Per ulteriori informazioni su come vengono fatturate le richieste di dati dei luoghi, consulta Utilizzo e fatturazione.

L'API richiama il metodo di callback specificato, restituendo un array di GMSPlaceLikelihood di oggetti strutturati.

Ciascuna GMSPlaceLikelihood rappresenta un luogo. Per ogni luogo, il risultato include un'indicazione della probabilità che il luogo sia quello giusto. Un valore più alto indica una maggiore probabilità che il luogo sia la migliore corrispondenza. Il buffer potrebbe essere vuota, se non esiste un luogo noto corrispondente alla posizione del dispositivo.

Il seguente esempio di codice recupera l'elenco di posizioni in cui si trova il dispositivo che ha più probabilità di trovarsi e registra il nome e la probabilità di ciascun 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 del luogo è 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 GMSPlaceLikelihood è sempre minore o uguale a 1,0. Tieni presente che la somma non è necessariamente 1,0.

Ad esempio, per indicare una probabilità del 55% che il luogo corretto sia Place A, e una probabilità del 35% che si tratti di Place B, l'array della probabilità ha due membri: Posiziona A con una probabilità di 0,55 e Posiziona B con una probabilità di 0,35.

Visualizzare le attribuzioni nell'app

Quando la tua app mostra informazioni ottenute da GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, l'app devono mostrare anche le attribuzioni. Scopri di più su attribuzioni.