Le SDK Places pour iOS vous permet de découvrir le lieu où se trouve actuellement l'appareil. Autrement dit, le lieu correspondant à la position signalée par l'appareil. Les établissements locaux, les points d'intérêt et les emplacements géographiques sont des exemples de lieux.
- Demander l'autorisation d'accéder à la position
- Limites d'utilisation
- Obtenir la position actuelle
- 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 informant l'utilisateur de la raison pour laquelle 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 de passer l'appel :
- Ajoutez la clé
NSLocationAlwaysUsageDescriptionà votre fichierInfo.plist. - Appelez
requestAlwaysAuthorizationsur n'importe quelle instance deCLLocationManageravant 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 un autre lieu où se trouve actuellement l'appareil, appelez GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Incluez les paramètres suivants :
- Un ou plusieurs
GMSPlaceField, spécifiant les types de données à renvoyer. Si vous omettez ce paramètre, TOUS les champs possibles seront renvoyés, et cela vous sera facturé 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 Atmosphere 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, qui renvoie 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 la probabilité que le lieu soit la meilleure correspondance est grande. Le tampon peut être vide s'il n'existe aucun lieu connu correspondant à la position 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, puis consigne 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
GMSPlaceLikelihoodrenvoyé 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