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.
- 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 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:
- Ajoutez la clé
NSLocationAlwaysUsageDescription
à votre fichierInfo.plist
. - Appelez
requestAlwaysAuthorization
sur n'importe quelle instance deCLLocationManager
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