Le SDK Places pour iOS vous permet de savoir où se trouve actuellement l'appareil. C'est-à-dire le lieu indiqué à l'emplacement actuellement indiqué par l'appareil. Il peut s'agir d'établissements locaux, de points d'intérêt et de zones géographiques.
- Demander une 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 exécutée 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];
Détermination de 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
, en spécifiant les types de données à renvoyer. Si vous omettez ce paramètre, TOUS les champs possibles seront renvoyés et vous serez facturé en conséquence. Cela ne s'applique qu'aux requêtes Place Details. - 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 de base sont facturés au tarif de base et n'entraînent aucuns frais supplémentaires. Les champs de contact et d'ambiance sont facturés à un tarif plus élevé. Pour en savoir plus sur la facturation des requêtes de données de lieu, consultez la section 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 indique la probabilité que le lieu soit le bon. Plus la valeur est élevée, plus le lieu a de chances d'être 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 d'être situé, 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 du lieu qui constitue la meilleure correspondance dans la liste des lieux renvoyés pour une seule requête. Vous ne pouvez pas comparer les probabilités selon les demandes.
- 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 1,0.
Par exemple, pour représenter une probabilité de 55% que le bon endroit soit le lieu A et une probabilité de 35% que le lieu B soit le bon, le tableau de probabilité comprend 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