Current Place

Sélectionnez une plate-forme:Android iOS

Le SDK Places pour iOS vous permet de découvrir le lieu où se trouve actuellement l'appareil. c'est-à-dire le lieu correspondant à la position détectée par l'appareil. Il peut s'agir, par exemple, d'établissements locaux, de points d'intérêt ou de lieux géographiques.

  1. Demander l'autorisation d'accéder à la position
  2. Limites d'utilisation
  3. Obtenir la position actuelle
  4. Afficher les attributions dans votre application

Demander l'autorisation d'accéder à la position

Si votre application utilise GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, elle doit demander l'autorisation d'utiliser les services de localisation. Ajoutez la clé NSLocationWhenInUseUsageDescription à votre fichier Info.plist pour définir la chaîne expliquant à l'utilisateur pourquoi vous avez besoin des services de localisation. Exemple :

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

Si vous souhaitez appeler findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: lorsque l'application est en arrière-plan, sans déclencher de boîte de dialogue de confirmation, procédez comme suit avant d'effectuer l'appel:

  1. Ajoutez la clé NSLocationAlwaysUsageDescription à votre fichier Info.plist.
  2. Appelez requestAlwaysAuthorization sur n'importe quelle instance de CLLocationManager avant d'appeler la méthode.

Demandez l'autorisation à CLLocationManager comme suit:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

Obtenir la position actuelle

Pour trouver l'établissement local ou l'emplacement actuel de l'appareil, appelez GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluez les paramètres suivants:

  • Une ou plusieurs valeurs GMSPlaceField, spécifiant les types de données à renvoyer. Si vous omettez ce paramètre, TOUS les champs possibles seront renvoyés, et des frais vous seront facturés en conséquence. Cela ne s'applique qu'aux requêtes Place Details.
  • Une méthode de rappel pour gérer les résultats.

Les champs correspondent aux résultats Place Search et sont divisés en trois catégories de facturation : Basic, Contact et Atmosphere. Les champs Basic sont facturés au tarif de base et n'entraînent aucuns frais supplémentaires. Les champs Contact et Ambiance sont facturés à un tarif plus élevé. Pour en savoir plus sur la facturation des requêtes de données de lieu, consultez Utilisation et facturation.

L'API appelle la méthode de rappel spécifiée, en renvoyant un tableau d'objets GMSPlaceLikelihood.

Chaque objet GMSPlaceLikelihood représente un lieu. Pour chaque lieu, le résultat inclut une indication de la probabilité que le lieu soit le bon. Plus la valeur est élevée, plus il est probable que le lieu soit la meilleure correspondance. Le tampon peut être vide s'il n'existe aucun lieu connu correspondant à l'emplacement de l'appareil.

L'exemple de code suivant récupère la liste des lieux où l'appareil est le plus susceptible de se trouver, et enregistre le nom et la probabilité de chaque lieu.

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);
    }
  }
}];

Remarques à propos des valeurs de probabilité :

  • La probabilité fournit une probabilité relative que le lieu soit la meilleure correspondance dans la liste des lieux renvoyés pour une seule requête. Vous ne pouvez pas comparer les probabilités entre différentes requêtes.
  • La valeur de probabilité est comprise entre 0 et 1.0.
  • La somme des probabilités dans un tableau d'objets GMSPlaceLikelihood renvoyé est toujours inférieure ou égale à 1,0. Notez que la somme n'est pas nécessairement égale à 1,0.

Par exemple, pour représenter une probabilité de 55% que le lieu correct soit le lieu A et une probabilité de 35% qu'il s'agisse du lieu B, le tableau de probabilité comporte deux membres : le lieu A avec une probabilité de 0,55 et le lieu B avec une probabilité de 0,35.

Afficher les attributions dans votre application

Lorsque votre application affiche des informations obtenues à partir de GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, elle doit également afficher les attributions. En savoir plus sur les attributions