Le SDK Places pour iOS vous permet de découvrir le lieu où se trouve l'appareil. C'est-à-dire le lieu identifié par l'appareil via la géolocalisation. Il peut s'agir, par exemple, d'établissements locaux, de points d'intérêt et d'emplacements géographiques.
- Demander l'autorisation d'accéder à la position
- Limites d'utilisation
- Obtenir la position actuelle
- Afficher des 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 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 un autre lieu où se trouve 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 de 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, renvoyant un tableau d'objets GMSPlaceLikelihood
.
Chaque objet GMSPlaceLikelihood
représente un lieu. Pour chaque lieu, le résultat indique la probabilité que le lieu soit le bon. Plus la valeur est élevée, plus la probabilité que l'établissement soit la meilleure correspondance est élevée. Le tampon peut être vide si aucun lieu connu ne correspond à 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, et 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é indique la 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 renvoyé d'objets
GMSPlaceLikelihood
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 l'emplacement correct soit l'emplacement A et une probabilité de 35% qu'il s'agisse de l'emplacement B, le tableau des probabilités comporte deux membres : l'emplacement A avec une probabilité de 0,55 et l'emplacement 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 des attributions. En savoir plus sur les attributions