Recherche de lieux

Place Search introduit Text Search (nouvelle version), qui accepte une requête textuelle et renvoie un ensemble de lieux.

Text Search (nouvelle version) renvoie des informations sur un ensemble de lieux en fonction d'une chaîne, par exemple "pizza à New York", "magasin de chaussures près d'Ottawa" ou "123 Main Street". Ce service renvoie une liste des lieux correspondant à la chaîne de texte et aux limitations de zone géographique définis. Text Search (nouvelle version) vous permet de rechercher des lieux par type, de les filtrer en fonction de critères tels que les horaires d'ouverture et les avis, et de limiter ou de pondérer les résultats en fonction d'un lieu spécifique. Text Search (nouvelle version) a été totalement repensé, et offre de meilleures performances et une meilleure qualité de données que les anciennes API Places.

Conditions préalables

Pour utiliser Text Search (nouvelle version), vous devez activer l'API Places (nouvelle version) dans votre projet Google Cloud. Pour en savoir plus, consultez Premiers pas.

Principales caractéristiques de Text Search

Text Search (nouvelle version) propose les améliorations suivantes :

  • Des filtres de recherche supplémentaires sont désormais disponibles et offrent de nombreux nouveaux types de lieux ainsi que la possibilité de filtrer par note minimale.
  • Le masquage du champ est désormais accepté.
  • Les champs de lieu incluent désormais les notes et les avis.

Rechercher des lieux par requête textuelle

Appelez searchByText pour renvoyer une liste de lieux à partir d'une requête textuelle ou d'un numéro de téléphone. Si la requête contient un numéro de téléphone, le paramètre de région doit être défini sur celle du domaine à l'origine de la demande. Par exemple, si vous utilisez un numéro de téléphone pour rechercher un lieu au Japon et que le domaine à l'origine de la demande est jp, vous devez définir le paramètre region sur "jp". Si region est omis de la requête, l'API utilise par défaut la région États-Unis ("us").

Utilisez le paramètre fields pour spécifier une liste d'un ou plusieurs champs de données séparés par une virgule en Camel Case ("casse de chameau").

L'exemple suivant montre comment appeler searchByText pour trouver des lieux par requête textuelle.

TypeScript

let map;
let center;

async function initMap() {
    const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary;

    center = {lat: 37.4161493, lng: -122.0812166};
    map = new Map(document.getElementById('map') as HTMLElement, {
        center: center,
        zoom: 14,
        // ...
    });

    findPlaces();
}

async function findPlaces() {
    const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary;
    //@ts-ignore
    const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary;
    const request = {
        textQuery: 'Tacos in Mountain View',
        fields: ['displayName', 'location', 'businessStatus'],
        includedType: 'restaurant',
        isOpenNow: true,
        language: 'en-US',
        maxResultCount: 7,
        minRating: 3.2,
        region: 'us',
        useStrictTypeFiltering: false,
    };

    //@ts-ignore
    const { places } = await Place.searchByText(request);

    if (places.length) {
        console.log(places);

        const { LatLngBounds } = await google.maps.importLibrary("core") as google.maps.CoreLibrary;
        const bounds = new LatLngBounds();

        // Loop through and get all the results.
        places.forEach((place) => {
            const markerView = new AdvancedMarkerElement({
                map,
                position: place.location,
                title: place.displayName,
            });

            bounds.extend(place.location);
            console.log(place);
        });

        map.setCenter(bounds.getCenter());

    } else {
        console.log('No results');
    }
}

initMap();

JavaScript

let map;
let center;

async function initMap() {
  const { Map } = await google.maps.importLibrary("maps");

  center = { lat: 37.4161493, lng: -122.0812166 };
  map = new Map(document.getElementById("map"), {
    center: center,
    zoom: 14,
    // ...
  });
  findPlaces();
}

async function findPlaces() {
  const { Place } = await google.maps.importLibrary("places");
  //@ts-ignore
  const { AdvancedMarkerElement } = await google.maps.importLibrary("marker");
  const request = {
    textQuery: "Tacos in Mountain View",
    fields: ["displayName", "location", "businessStatus"],
    includedType: "restaurant",
    isOpenNow: true,
    language: "en-US",
    maxResultCount: 7,
    minRating: 3.2,
    region: "us",
    useStrictTypeFiltering: false,
  };
  //@ts-ignore
  const { places } = await Place.searchByText(request);

  if (places.length) {
    console.log(places);

    const { LatLngBounds } = await google.maps.importLibrary("core");
    const bounds = new LatLngBounds();

    // Loop through and get all the results.
    places.forEach((place) => {
      const markerView = new AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });

      bounds.extend(place.location);
      console.log(place);
    });
    map.setCenter(bounds.getCenter());
  } else {
    console.log("No results");
  }
}

initMap();