Le SDK Places pour iOS fournit de nombreuses informations à votre application sur un lieu, comme son nom et son adresse, son emplacement l'emplacement spécifié en tant que coordonnées de latitude/longitude, le type de lieu (boîte de nuit, animalerie, musée, etc.). Pour accéder à ces informations un lieu spécifique, vous pouvez utiliser l'identifiant de lieu, un identifiant stable qui identifie un lieu.
Détails sur le lieu
La
GMSPlace
fournit des informations sur un lieu spécifique. Vous pouvez obtenir
GMSPlace
de la manière suivante:
- Appeler
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
Consultez le guide pour obtenir le lieu actuel. - Appeler
GMSPlacesClient fetchPlaceFromPlaceID:
, en transmettant uneGMSPlaceField
, une un ID de lieu et une méthode de rappel. Pour les requêtes Place Details, si vous ne spécifiez au moins un champ avec une requête, ou si vous omettez lefields
d'une requête, TOUS les champs possibles sont renvoyés et seront facturés en conséquence. Consultez le guide pour obtenir un lieu par ID.
Lorsque vous demandez un lieu, vous devez spécifier les types de données de lieu à
retour. Pour ce faire, transmettez un GMSPlaceField
en spécifiant les données
à renvoyer. Il s'agit d'un point important à prendre en compte, car cela affectera
pour chaque requête.
Étant donné que les résultats des données de lieu ne peuvent pas être vides,
des résultats contenant des données sont renvoyés (par exemple, si un lieu demandé n'a pas de valeur
photos, le champ photos
n'apparaîtra pas dans le résultat).
L'exemple suivant transmet une liste de deux valeurs de champ. pour spécifier les données renvoyées par une requête:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
En savoir plus sur les champs de lieu. Pour en savoir plus sur la facturation des requêtes de données de lieu, consultez Utilisation et facturation.
La
GMSPlace
peut contenir les données de lieu suivantes:
name
: nom du lieu.editorialSummary
: description simple d'un lieu.placeID
: identifiant textuel du lieu. Lue plus d'informations sur les ID de lieu dans la suite de cette page.coordinate
: emplacement géographique du lieu. spécifiée en tant que coordonnées de latitude et de longitude.phoneNumber
: numéro de téléphone du lieu, au le format international.formattedAddress
: adresse lisible de cet élément l'emplacement.Bien souvent, cette adresse équivaut à l'adresse postale. Notez que certains pays, comme le Royaume-Uni, n'autorisent pas la distribution des vraies adresses postales en raison de restrictions de licence.
L'adresse formatée est composée d'un ou de plusieurs composants d'adresse logiques. Par exemple, l'adresse "111 8th Avenue, New York, NY" comprend les éléments suivants : "111" (le numéro de rue), "8th Avenue" (la route), "New York" (la ville) et "NY" (l'État américain).
N'analysez pas l'adresse formatée de manière programmatique. Utilisez plutôt les composants d'adresse individuels, que la réponse de l'API inclut en plus du champ d'adresse formaté.
openingHours
: horaires d'ouverture du lieu (sous la forme représentées parGMSOpeningHours
). AppelerGMSOpeningHours.weekdayText
pour obtenir la liste des chaînes localisées des horaires d'ouverture quotidiens de la semaine. Appeler leGMSOpeningHours.Periods
pour renvoyer une liste deGMSPeriod
avec des informations plus détaillées qui équivaut aux données fournies parweekdayText
. Remarque:Si un lieu est toujours ouvert, la période est représentée par la valeur dimanche à minuit, et la valeurcloseEvent
est nulle.currentOpeningHours
etsecondaryOpeningHours
: champs auxquels s'appliquent les jours fériés et les modifications temporaires de la programmation d'un lieu.addressComponents
: tableau de ObjetsGMSAddressComponent
représentant les composants de l'adresse d'un lieu. Ces composants sont fournis extraire des informations structurées sur l'adresse d'un lieu, par exemple trouver la ville dans laquelle un lieu est situé. Ne pas utiliser ces composants pour le formatage des adresses ; utilisez plutôtformattedAddress
, qui fournit une adresse au format localisé.Remarques concernant
addressComponents
: tableau:- Le tableau de composants d'adresse peut contenir plus de composants que le
formattedAddress
- Le tableau n'inclut pas nécessairement toutes les entités politiques qui
contiennent une adresse e-mail, à l'exception de celles incluses dans le
formattedAddress
- Il n'est pas garanti que le format de la réponse reste le même entre
requêtes. En particulier, le nombre de
addressComponents
varie en fonction de l'adresse demandée et peut changer au fil du temps pour la même adresse. Un composant peut changer de position dans le tableau. Le type du composant peut changer. Un composant particulier peut être absente dans une réponse ultérieure.
- Le tableau de composants d'adresse peut contenir plus de composants que le
userRatingsTotal
: représente le nombre d'avis contenus la note du lieu.
La
GMSPlace
contient les fonctions membres suivantes:
- <ph type="x-smartling-placeholder"></ph>
isOpen
calcule si un lieu est ouvert à l'heure donnée. basée suropeningHours
etUTCOffsetMinutes
, ainsi que la date et l'heure actuelles. isOpenAtDate
calcule si un lieu est ouvert à une date donnée, en fonction deopeningHours
etUTCOffsetMinutes
, ainsi que la date et l'heure actuelles.
Lorsque vous utilisez ces fonctions pour obtenir des heures d'ouverture et/ou des dates, l'original
fetchPlaceFromPlaceID:
ou findPlaceLikelihoodsFromUserLocationWithPlaceFields:
la requête doit spécifier à LA FOIS GMSPlaceFieldOpeningHours
et GMSPlaceFieldUTCOffsetMinutes
. Si l'un de ces champs est manquant, le GMSPlace
obtenu
ne contiendra ni les heures d'ouverture, ni les dates, et l'appel renverra
GMSPlaceOpenStatusUnknown
Pour garantir des résultats précis, demandez
GMSPlaceFieldBusinessStatus
et GMSPlaceFieldUTCOffsetMinutes
dans votre requête de lieu initiale. S'il n'est pas demandé, nous partons du principe que
l'entreprise est opérationnelle.
isOpen
avec Place Details.
Profitez d'horaires exceptionnels
Même si les horaires d'ouverture habituels sont obtenus jusqu'auopeningHours
, currentOpeningHours
et secondaryOpeningHours
permettent de modifier les horaires pendant les jours fériés et les horaires d'ouverture.
Vous pouvez filtrer les horaires exceptionnels de ces jours fériés et les présenter, le cas échéant.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Obtenir un lieu par identifiant
Un ID de lieu est un identifiant texte qui identifie un lieu de façon unique. Dans
le SDK Places pour iOS, vous pouvez récupérer l'identifiant d'un lieu à partir d'un
GMSPlace
. Vous pouvez stocker l'ID de lieu et l'utiliser pour récupérer
GMSPlace
ultérieurement.
Pour obtenir un lieu par ID, appelez
GMSPlacesClient
fetchPlaceFromPlaceID:
, en transmettant les paramètres suivants:
- Chaîne contenant un ID de lieu.
- Une ou plusieurs valeurs
GMSPlaceField
, spécifiant les types de données à renvoyer. - Jeton de session si l'appel est effectué pour conclure une requête de saisie semi-automatique. Sinon, transmettez la valeur "nil".
- Un
GMSPlaceResultCallback
pour gérer le résultat.
L'API invoque la méthode de rappel spécifiée, en transmettant une
GMSPlace
. Si le lieu est introuvable, l'objet GMSPlace est nul.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Afficher les mentions dans votre application
Lorsque votre application affiche des informations obtenues
GMSPlacesClient
lookUpPlaceID:callback:
, l'application doit également afficher les mentions.
Consultez la documentation sur
attributions.
Informations supplémentaires sur les identifiants de lieu
L'identifiant de lieu utilisé dans le SDK Places pour iOS est le même que utilisé dans le API Places, SDK Places pour Android et d'autres API Google.
Chaque identifiant de lieu ne peut faire référence qu'à un seul lieu, mais un seul peut en contenir plusieurs. plusieurs ID de lieu.
Dans certains cas, un lieu peut recevoir un nouvel ID de lieu. Par exemple, lorsqu'un professionnel déménage.
Lorsque vous demandez un lieu en spécifiant un ID de lieu, vous êtes sûr que vous recevrez toujours la même réponse au même endroit (si le lieu est toujours . Notez toutefois que la réponse peut contenir un ID de lieu différente de celle de votre demande.
Pour en savoir plus, consultez les présentation des ID de lieu.