Luogo attuale

Seleziona piattaforma: Android iOS

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

  1. Richiedere l'autorizzazione di accesso alla posizione
  2. Limiti di utilizzo
  3. Conoscere la posizione corrente
  4. Mostrare le attribuzioni nell'app

Richiesta di autorizzazione di accesso alla posizione

Se utilizza GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, l'app deve richiedere l'autorizzazione per utilizzare i servizi di geolocalizzazione. Aggiungi la chiave NSLocationWhenInUseUsageDescription al file Info.plist per definire la stringa che spiega all'utente i motivi per cui 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, completa i passaggi seguenti prima di effettuare la chiamata:

  1. Aggiungi la chiave NSLocationAlwaysUsageDescription al file Info.plist.
  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 l'altro luogo in cui si trova il dispositivo, chiama il numero 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 ti verrà addebitato l'importo corrispondente. Questo vale solo per le richieste Dettagli luogo.
  • Un metodo di callback per gestire i risultati.

I campi corrispondono ai risultati della Ricerca di luoghi e sono suddivisi in tre categorie di fatturazione: Di base, Contatto e Ambiente. I campi di base vengono fatturati alla tariffa di base e non comportano costi aggiuntivi. I campi Contatto e Ambiente sono fatturati a una tariffa superiore. Per maggiori informazioni sulle modalità di fatturazione delle 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 giusto. Un valore più alto indica una maggiore probabilità che il luogo sia la migliore corrispondenza. Il buffer potrebbe essere vuoto se non esiste una posizione nota corrispondente alla posizione del dispositivo.

L'esempio di codice riportato di seguito recupera l'elenco dei luoghi in cui è più probabile che il dispositivo si trovi 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 di 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 diverse richieste.
  • Il valore di 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 1,0.

Ad esempio, per rappresentare una probabilità del 55% che il luogo corretto sia il luogo A e una probabilità del 35% di essere il luogo B, l'array di probabilità ha due membri: posto A con una probabilità di 0,55 e luogo B con una probabilità di 0,35.

Visualizzazione delle attribuzioni nell'app

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