Búsqueda de sitios

Place Search incorpora Text Search (nueva), que toma una búsqueda de texto y devuelve un conjunto de lugares.

Text Search (nueva) muestra información sobre un conjunto de lugares en función de una cadena; por ejemplo, "pizza en Buenos Aires", "tiendas de zapatos cerca de Santiago" o "Calle principal 123". El servicio responde con una lista de lugares que coinciden con la cadena de texto y con cualquier personalización de ubicación que se haya establecido. Text Search (nueva) te permite buscar lugares por tipo, aplicar filtros usando criterios como el horario de atención y la calificación, y ordenar o restringir los resultados en función de una ubicación específica. Text Search (nueva) es una función completamente nueva y ofrece un rendimiento y una calidad de datos mejorados en comparación con las APIs de Places heredadas.

Requisitos previos

Para utilizar Text Search (nueva), debes habilitar "API de Places (nueva)" en tu proyecto de Google Cloud. Consulta Cómo comenzar para obtener información detallada.

Puntos destacados de Text Search

Text Search (nueva) incluye las siguientes mejoras:

  • Filtros de búsqueda adicionales, que incluyen muchos tipos de lugares nuevos, así como la capacidad de filtrar por calificaciones mínimas.
  • Ahora se admite el enmascaramiento de campo
  • Los campos de lugar ahora incluyen calificaciones y opiniones.

Cómo buscar lugares mediante búsqueda de texto

Haz una llamada a searchByText para obtener una lista de lugares a partir de una búsqueda de texto o un número de teléfono. Si la búsqueda contiene un número de teléfono, el parámetro de región debe coincidir con la región del dominio solicitante. Por ejemplo, si usas un número de teléfono para buscar un lugar de Japón y el dominio solicitante es jp, debes configurar el parámetro region como "jp". Si se omite region en la solicitud, la API adoptará, de forma predeterminada, la región de los Estados Unidos ("us").

Usa el parámetro fields para especificar una lista separada por comas de uno o más campos de datos con mayúsculas mediales.

En el siguiente ejemplo, se muestra cómo llamar a searchByText para encontrar lugares mediante una búsqueda de texto.

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();