Text Search (nouvelle version)

Sélectionnez une plate-forme : Android iOS JavaScript Services Web

Text Search renvoie des informations sur un ensemble de lieux en fonction d'une chaîne. Par exemple, "pizza à Paris", "magasin de chaussures à proximité de Ottawa" ou "123 Main Street". Le service répond avec une liste de lieux correspondant à la chaîne de texte et à tout biais de localisation défini.

Ce service est particulièrement utile pour créer des adresses ambiguës de requêtes dans un système automatisé, et autres que des adresses peuvent correspondre à des entreprises, des adresses IP externes. Les adresses au format incorrect sont des exemples de requêtes d'adresse ambiguës. ou qui incluent des composants autres que des adresses, comme les noms d'entreprise. Les requêtes comme les deux premiers exemples peuvent renvoyer zéro résultat, sauf si l'emplacement (région, restriction d'emplacement ou biais de l'emplacement, par exemple) est définie.

"10 High Street, Royaume-Uni" ou "123 Main Street, États-Unis" Plusieurs boutiques de "High Street" au Royaume-Uni plusieurs "Main Street" aux États-Unis. La requête ne renvoie pas de résultats souhaitables, sauf si une restriction d'emplacement est défini.
"Chaîne de restaurants Paris" Plusieurs "chaînes de restaurants" à New York ; sans adresse postale et même le nom de la rue.
"10 High Street, Escher Royaume-Uni" ou "123 Main Street, Pleasanton US" Une seule "High Street" dans la ville d'Escher au Royaume-Uni, une seule "Rue principale" dans la ville américaine de Pleasanton, en Californie.
"UniqueRestaurantName New York" Un seul établissement portant ce nom à Paris aucune adresse postale nécessaires pour différencier.
"restaurants pizzerias à Paris" Cette requête contient la restriction géographique associée, ainsi que les termes "pizzas" correspond à d'un type de lieu bien défini. Elle renvoie plusieurs résultats.
"+1 514-670-8700"

Cette requête contient un numéro de téléphone. Elle renvoie plusieurs résultats pour lieux associés à ce numéro de téléphone.

Obtenir une liste de lieux par recherche textuelle

Effectuez une requête Text Search en appelant GMSPlacesClient searchByTextWithRequest:. en transmettant GMSPlaceSearchByTextRequest qui définit les paramètres de requête et une méthode de rappel, de type GMSPlaceSearchByTextResultCallback, pour gérer la réponse.

L'objet GMSPlaceSearchByTextRequest spécifie tous les Paramètres obligatoires et facultatifs pour la requête. Les paramètres obligatoires sont les suivants:

  • Liste des champs à renvoyer dans l'objet GMSPlace, également appelé masque de champ, tel que défini par GMSPlaceProperty Si vous ne spécifiez pas au moins un champ dans la liste des champs ou si vous omettez la liste des champs, l'appel renvoie une erreur.
  • Requête textuelle.

Cet exemple de requête de recherche de texte indique que les objets GMSPlace de la réponse contient le nom et l'ID de lieu pour chaque objet GMSPlace de la recherche. résultats. Il filtre également la réponse pour ne renvoyer que les lieux de type "restaurant".

Swift

// Create the GMSPlaceSearchByTextRequest object.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue}
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)

// Array to hold the places in the response
var placeResults: [GMSPlace] = []

let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  placeResults = results
}

GMSPlacesClient.shared().searchByText(with: request, callback: callback)

Objective-C

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0);

// Array to hold the places in the response
_placeResults = [NSArray array];

// Create the GMSPlaceSearchByTextRequest object.
[_placesClient searchByTextWithRequest:request
    callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"An error occurred %@", [error localizedDescription]);
        return;
      } else {
        if (placeResults.count > 0) {
          // Get list of places.
          _placeResults = placeResults;
      }
    }
  }
];

SDK Places Swift pour iOS (preview)

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

Réponses de Text Search

L'API Text Search renvoie un tableau de correspondances dans le forme de GMSPlace avec un objet GMSPlace par lieu correspondant.

Obtenir l'état d'ouverture

L'objet GMSPlacesClient contient une fonction membre appelée isOpenWithRequest (isOpenRequest en Swift et isPlaceOpenRequest dans GooglePlacesSwift) qui renvoie une réponse indiquant si le lieu est actuellement ouvert, en fonction de l'heure spécifiée dans l'appel.

Cette méthode utilise un seul argument de type GMSPlaceIsOpenWithRequest qui contient :

  • Un objet GMSPlace ou une chaîne spécifiant un ID de lieu. Pour en savoir plus sur la création de l'objet Place avec les champs nécessaires, consultez Informations sur le lieu.
  • Objet NSDate (Objective-C) ou Date (Swift) facultatif spécifiant l'heure que vous souhaitez vérifier. Si aucune heure n'est spécifiée, la valeur par défaut est "now".
  • Une méthode GMSPlaceOpenStatusResponseCallback pour gérer la réponse.
  • &gt;

La méthode GMSPlaceIsOpenWithRequest nécessite que les champs suivants soient définis dans l'objet GMSPlace:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Si ces champs ne sont pas fournis dans l'objet Place ou si vous transmettez un ID de lieu, la méthode les récupère à l'aide de GMSPlacesClient GMSFetchPlaceRequest:.

isOpenWithRequest réponse

isOpenWithRequest renvoie un objet GMSPlaceIsOpenResponse contenant une valeur booléenne nommée status qui indique si l'établissement est ouvert ou fermé, ou si l'état est inconnu.

Langue Valeur si ouverte Valeur en cas de fermeture Valeur si état inconnu
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (Preview) true false nil

Facturation pour isOpenWithRequest

  • Les champs GMSPlacePropertyUTCOffsetMinutes et GMSPlacePropertyBusinessStatus sont facturés sous le SKU Basic Data. Le reste des heures d'ouverture est facturé sous le code SKU Place Details (Advanced).
  • Si votre objet GMSPlace contient déjà ces champs provenant d'une requête précédente, vous ne serez plus facturé.

Exemple : Envoyer une requête GMSPlaceIsOpenWithRequest

L'exemple suivant montre comment initialiser un GMSPlaceIsOpenWithRequest dans un objet GMSPlace existant.

Swift

    let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil)
      GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in
        if let error = error {
          // Handle Error
        }
        switch response.status {
          case .open:
            // Handle open
          case .closed:
            // Handle closed
          case .unknown:
            // Handle unknown
        }
      }
        

Objective-C

          GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil];
  
          [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) {
            if (error) {
              // Handle error
            }
  
            switch (response.status) {
              case GMSPlaceOpenStatusOpen:
                // Handle open
              case GMSPlaceOpenStatusClosed:
                // Handle closed
              case GMSPlaceOpenStatusUnknown:
                // Handle unknown
            }
          }];
          

GooglePlacesSwift

          let isOpenRequest = IsPlaceOpenRequest(place: place)
          switch await placesClient.isPlaceOpen(with: isOpenRequest) {
            case .success(let isOpenResponse):
              switch isOpenResponse.status {
                case true:
                  // Handle open
                case false:
                  // Handle closed
                case nil:
                  // Handle unknown
            case .failure(let placesError):
              // Handle error
          }
          

Paramètres obligatoires

Utilisez l'objet GMSPlaceSearchByTextRequest pour spécifier les paramètres de recherche.

  • Liste des champs

    Spécifiez les propriétés des données de lieu à renvoyer. Transmettre une liste de GMSPlace spécifiant les champs de données à renvoyer. Si vous omettez le champ masque, la requête renvoie une erreur.

    Les listes de champs sont une bonne pratique à appliquer pour vous assurer de ne pas demander des données inutiles, ce qui permet d'éviter les délais de traitement et frais facturés.

    Renseignez un ou plusieurs des champs suivants:

    • Les champs suivants déclenchent le SKU Text Search (ID Only):

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • Les champs suivants déclenchent le SKU Text Search (Basic):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • Les champs suivants déclenchent le SKU Text Search (Advanced):

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • Les champs suivants déclenchent le SKU Text Search (Preferred):

      GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout
  • textQuery

    Chaîne de texte sur laquelle doit porter la recherche, par exemple "restaurant", "123 Main "Street" ou "meilleur endroit à visiter à San Francisco".

Paramètres facultatifs

Utilisez l'objet GMSPlaceSearchByTextRequest pour spécifier les paramètres facultatifs de la recherche.

  • includedType

    Limite les résultats aux lieux correspondant au type spécifié défini par Tableau A : Vous ne pouvez spécifier qu'un seul type. Exemple :

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • isOpenNow

    Si la valeur est true, ne renvoyez que les lieux ouverts lors de l'envoi de la requête. Si la valeur est false, renvoie tous les établissements quel que soit leur état d'ouverture. Les lieux pour lesquels aucun horaire d'ouverture n'est spécifié dans la base de données Google Places sont est renvoyé si vous définissez ce paramètre sur false.

  • isStrictTypeFiltering

    Utilisé avec le paramètre includeType. Lorsque la valeur est true, seuls les lieux correspondant aux types spécifiés par includeType sont renvoyés. Si la valeur est "false", la réponse par défaut peut contenir des lieux qui ne correspondent pas les types spécifiés.

  • locationBias

    Spécifie une zone de recherche. Cet emplacement sert de biais, ce qui signifie des résultats situés à proximité du lieu spécifié, y compris des résultats en dehors de la zone spécifiée.

    Vous pouvez spécifier locationRestriction ou locationBias, mais pas les deux. Considérez locationRestriction comme spécifiant la région dans laquelle les résultats doivent se trouver, et locationBias comme spécifiant la région à proximité de laquelle les résultats doivent se trouver, mais qui peut être en dehors de la zone.

    Spécifiez la région sous forme de fenêtre d'affichage rectangulaire ou de cercle.

    • Un cercle est défini par le point central et le rayon en mètres. Le rayon doit être comprise entre 0.0 et 50000.0, inclus. Le rayon par défaut est de 0,0. Exemple :

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
    • Un rectangle est une fenêtre d'affichage de latitude-longitude, représentée par deux en diagonale à l'opposé des points haut et bas. Le point bas indique le sud-ouest. du rectangle et le point haut représente le nord-est du rectangle.

      Une fenêtre d'affichage est considérée comme fermée, ce qui signifie qu'elle inclut ses limites. Les limites de latitude doivent être comprises entre -90 et 90 degrés, et les limites de longitude entre -180 et 180 degrés, inclus :

      • Si low = high, la fenêtre d'affichage est constituée des éléments suivants : sur ce point.
      • Si low.longitude > high.longitude, le de longitude est inversée (la fenêtre d'affichage traverse (ligne de longitude).
      • Si low.longitude = -180 degrés et high.longitude = 180 degrés, la fenêtre d'affichage inclut toutes les longitudes.
      • Si low.longitude = 180 degrés et high.longitude = -180 degrés, la plage de longitude est vide.
      • Si low.latitude > high.latitude, le La plage de latitude est vide.
  • locationRestriction

    Spécifie une zone de recherche. Les résultats situés en dehors de la zone spécifiée renvoyé. Spécifiez la région sous la forme d'une fenêtre d'affichage rectangulaire. Voir la description sur locationBias pour en savoir plus sur la définition de la fenêtre d'affichage.

    Vous pouvez spécifier locationRestriction ou locationBias, mais pas les deux. Considérez locationRestriction comme spécifiant la région dans laquelle les résultats doivent se trouver, et locationBias comme spécifiant la région à proximité de laquelle les résultats doivent se trouver, mais qui peut être en dehors de la zone.

  • maxResultCount

    Spécifie le nombre maximal de résultats de lieu à renvoyer. Doit être compris entre 1 et 20 (par défaut), inclus.

  • minRating

    Limite les résultats aux seuls utilisateurs dont la note moyenne par les utilisateurs est supérieure à ou égale à cette limite. Les valeurs doivent être comprises entre 0.0 et 5.0 (inclus) dans par incréments de 0,5. Par exemple : 0, 0,5, 1,0, etc., jusqu'à 5,0 inclus. Les valeurs sont les suivantes : arrondie au 0,5 le plus proche. Par exemple, une valeur de 0,6 élimine tous les résultats dont la note est inférieure à 1,0.

  • priceLevels

    Limiter la recherche aux lieux qui sont marqués à certains niveaux de prix Par défaut, tous les niveaux de prix sont sélectionnés.

    Spécifiez un tableau contenant une ou plusieurs valeurs définies par PriceLevel

    Exemple :

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    Spécifie comment les résultats sont classés dans la réponse en fonction du type de requête :

    • Pour une requête catégorielle telle que "Restaurants à New York", .relevance (classer les résultats en fonction de la pertinence des recherches) est l'option par défaut. Vous pouvez définir rankPreference sur .relevance ou .distance (classer les résultats en fonction de la distance)
    • Pour une requête non catégorielle telle que "Mountain View, CA", nous recommandons de ne pas définir rankPreference.
  • regionCode

    Code régional utilisé pour mettre en forme la réponse, spécifié sous la forme d'une CLDR à deux caractères. Ce paramètre peut également avoir un effet de biais dans les résultats de recherche. Il n'existe pas de valeur par défaut.

    Si le nom de pays du champ d'adresse dans la réponse correspond au code de région, le code pays est omis de l'adresse.

    La plupart des codes CLDR sont identiques aux codes ISO 3166-1, à quelques exceptions près. Par exemple, le ccTLD du Royaume-Uni est "uk" (.co.uk), tandis que son code ISO 3166-1 est "gb" (techniquement pour l'entité "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord"). Le paramètre peut avoir une incidence sur les résultats en fonction de la législation applicable.

Afficher les mentions dans votre application

Lorsque votre application affiche des informations obtenues à partir de GMSPlacesClient, telles que des photos et des avis, elle doit également afficher les attributions requises.

Par exemple, la propriété reviews de l'objet GMSPlacesClient contient un tableau comportant jusqu'à cinq GMSPlaceReview d'objets. Chaque objet GMSPlaceReview peut contenir des attributions et des attributions d'auteurs. Si vous affichez l'avis dans votre application, vous devez également mentionner la paternité ou l'auteur l'attribution.

Pour en savoir plus, consultez la documentation attributions.