Luogo attuale

Seleziona la piattaforma: Android iOS

Con l'SDK Places per iOS, puoi scoprire il luogo in cui si trova attualmente il dispositivo. ovvero il luogo dove si trova attualmente il dispositivo. Alcuni esempi di luoghi sono attività locali, punti d'interesse e località geografiche.

  1. Richiedere l'autorizzazione di accesso alla posizione
  2. Limiti di utilizzo
  3. Individuare la posizione attuale
  4. Attribuzioni della Rete Display 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 indichi all'utente perché sono necessari i 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, segui questi passaggi prima di effettuare la chiamata:

  1. Aggiungi la chiave NSLocationAlwaysUsageDescription al 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 attuale in corso...

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, specificando i tipi di dati da restituire. Se ometti questo parametro, verranno restituiti TUTTI i campi possibili e ti verranno addebitati i costi corrispondenti. Si applica solo alle 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 base vengono fatturati alla tariffa di base e non comportano costi aggiuntivi. I campi Contatto e Ambiente vengono fatturati con 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 oggetti GMSPlaceLikelihood.

Ogni oggetto 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 corrisponda meglio. Il buffer potrebbe essere vuoto se non esiste una posizione nota 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 ciascuna località.

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à tra richieste diverse.
  • Il valore della probabilità sarà compreso tra 0 e 1,0.
  • La somma delle probabilità in un array restituito di oggetti GMSPlaceLikelihood è sempre minore o uguale a 1,0. Tieni presente che la somma non è necessariamente 1,0.

Ad esempio, per rappresentare una probabilità del 55% che la posizione corretta sia Place A e una probabilità del 35% che sia Place B, l'array di probabilità ha due membri: Place A con una probabilità di 0,55 e Place B con una probabilità di 0,35.

Visualizzazione delle attribuzioni nell'app

Quando l'app mostra informazioni ottenute da GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, deve mostrare anche le attribuzioni. Scopri di più sulle attribuzioni.