Text Search (nueva)

Selecciona la plataforma: Android iOS JavaScript Servicio web

Text Search (nueva) devuelve información sobre un conjunto de lugares basados en una cadena (por ejemplo, "pizza en Nueva York") o "zapaterías cerca de Ottawa" o “Calle Principal 123”. El servicio responde con una lista de lugares que coincide con la cadena de texto y con cualquier personalización de ubicación que se haya establecido.

El servicio es especialmente útil para crear direcciones ambiguas las consultas en un sistema automatizado y los componentes sin dirección de la cadena pueden coincidir con las empresas, así como direcciones IP del proveedor. Algunos ejemplos de consultas de direcciones ambiguas son las direcciones con formato incorrecto o solicitudes que incluyen componentes sin dirección, como nombres de empresas. Solicitudes como los dos primeros ejemplos podría devolver cero resultados a menos que una ubicación, como región, restricción de ubicación o sesgo de ubicación.

Text Search (nueva) es similar a Nearby Search (Nuevo). El principal La diferencia entre ambas es que Text Search (nueva) te permite especificar una cadena de búsqueda arbitraria mientras que Nearby Search (nuevo) requiere un específica en la que buscar.

“10 High Street, UK” o “123 Main Street, US” varias "High Street" en el Reino Unido varias "Calles Principales" en los EE. UU. La consulta no devuelve resultados deseados, a menos que se aplique una restricción de ubicación automático.
"ChainRestaurant de Nueva York" Varios "ChainRestaurant" ubicaciones en Nueva York; sin dirección o incluso el nombre de la calle.
"10 High Street, Escher, Reino Unido" o "123 Main Street, Pleasanton US" Solo una calle principal en la ciudad de Escher, en el Reino Unido; solo una “Calle Principal” en la ciudad estadounidense de Pleasanton, California.
"NombreDeRestaurante exclusivo Nueva York" Solo un establecimiento con este nombre en Nueva York sin dirección necesario para diferenciarlos.
"pizzas en Nueva York" Esta consulta contiene su restricción de ubicación y "pizzería" es un tipo de lugar bien definido. Muestra varios resultados.
"+1 514-670-8700"

Esta consulta contiene un número de teléfono. Devuelve varios resultados para lugares asociados con ese número de teléfono.

Solicitudes de Text Search

Una solicitud de Text Search tiene el siguiente formato:

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Define latitude and longitude coordinates of the search area.
LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874);
LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572);

// Use the builder to create a SearchByTextRequest object.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
  .setMaxResultCount(10)
  .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place objects.
placesClient.searchByText(searchByTextRequest)
    .addOnSuccessListener(response -> {
      List<Place> places = response.getPlaces();
    });

En este ejemplo, hiciste lo siguiente:

  • Configura la lista de campos para que incluya solo Place.Field.ID y Place.Field.NAME. Esto significa que los objetos Place en la respuesta que representan cada coincidencia solo contienen esos dos campos.

  • Usa SearchByTextRequest.Builder. para crear un SearchByTextRequest que define la búsqueda.

    • Establece la cadena de consulta de texto como "Comida vegetariana picante".

    • Establece la cantidad máxima de lugares de resultado en 10. La configuración predeterminada el máximo es 20.

    • Restringir el área de búsqueda al rectángulo definido por latitud y coordenadas de longitud. No se muestran coincidencias fuera de esta área.

  • Agrega un OnSuccessListener y obtén los lugares coincidentes de SearchByTextResponse .

Respuestas de Text Search

El SearchByTextResponse la clase representa la respuesta de una solicitud de búsqueda. Un SearchByTextResponse El objeto contiene lo siguiente:

  • Una lista de objetos Place que representan todos los lugares coincidentes, con uno Place objeto por lugar coincidente.

  • Cada objeto Place solo contiene los campos definidos por la lista de campos pasado en la solicitud.

Por ejemplo, en la solicitud, definiste una lista de campos de la siguiente manera:

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

Esta lista de campos indica que cada objeto Place de la respuesta contiene solo el ID de lugar y nombre de cada lugar coincidente. Luego, puedes usar Place.getId() y Place.getName() para acceder a estos campos en cada objeto Place.

Para obtener más ejemplos de acceso a datos en un objeto Place, consulta Access Place campos de datos de objetos

Parámetros obligatorios

Los parámetros obligatorios para SearchByTextRequest son:

  • Lista de campos

    Especifica qué campos de datos de lugar deseas devolver. Pasar una lista de Place.Field que especifican los campos de datos que se deben devolver. No hay una lista predeterminada de que se muestran en la respuesta.

    Las listas de campos constituyen una práctica de diseño recomendada para asegurarse de no solicitar datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos de facturación.

    Especifica uno o más de los siguientes campos:

    • Los siguientes campos activan el SKU de Text Search (solo ID):

      Place.Field.ID, Place.Field.NAME
    • Los siguientes campos activan el SKU de Text Search (Basic):

      Place.Field.ADDRESS_COMPONENTS, Place.Field.BUSINESS_STATUS: Place.Field.ADDRESS, Place.Field.ICON_BACKGROUND_COLOR, Place.Field.ICON_URL, Place.Field.LAT_LNG: Place.Field.PHOTO_METADATAS, Place.Field.PLUS_CODE, Place.Field.TYPES, Place.Field.UTC_OFFSET, Place.Field.VIEWPORT, Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
    • Los siguientes campos activan el SKU de Text Search (Advanced):

      Place.Field.CURRENT_OPENING_HOURS, Place.Field.SECONDARY_OPENING_HOURS: Place.Field.PHONE_NUMBER, Place.Field.PRICE_LEVEL, Place.Field.RATING, Place.Field.OPENING_HOURS: Place.Field.USER_RATINGS_TOTAL, Place.Field.WEBSITE_URI
    • Los siguientes campos activan el SKU de Text Search (Preferred):

      Place.Field.CURBSIDE_PICKUP, Place.Field.DELIVERY: Place.Field.DINE_IN, Place.Field.EDITORIAL_SUMMARY, Place.Field.RESERVABLE, Place.Field.REVIEWS: Place.Field.SERVES_BEER, Place.Field.SERVES_BREAKFAST, Place.Field.SERVES_BRUNCH, Place.Field.SERVES_DINNER, Place.Field.SERVES_LUNCH, Place.Field.SERVES_VEGETARIAN_FOOD, Place.Field.SERVES_WINE, Place.Field.TAKEOUT

    Para establecer el parámetro de lista de campos, llama al método setPlaceFields() cuando compiles el objeto SearchByTextRequest.

  • Consulta de texto

    Cadena de texto en la que se realizará la búsqueda, por ejemplo: "restaurante", “Calle principal 123” o “el mejor lugar para visitar en San Francisco”. La API muestra posibles coincidencias en función de esta cadena y ordena los resultados según en la relevancia percibida.

    Para establecer el parámetro de búsqueda de texto, llama al método setTextQuery() cuando compiles el objeto SearchByTextRequest.

Parámetros opcionales

Usa el SearchByTextRequest para especificar los parámetros opcionales de tu solicitud.

  • Tipo incluido

    Restringe los resultados a los sitios que coinciden con el tipo especificado definido por Tabla A: Solo se puede especificar un tipo. Por ejemplo:

    • setIncludedType("bar")
    • setIncludedType("pharmacy")

    Para establecer el parámetro de tipo incluido, llama al método setIncludedType() cuando compiles el objeto SearchByTextRequest.

  • Sesgo de ubicación

    Especifica un área de búsqueda. Esta ubicación sirve como un sesgo, lo que significa se pueden devolver resultados alrededor de la ubicación especificada, incluso resultados fuera del área especificada.

    Puedes especificar una restricción o un sesgo de ubicación pero no ambas. Piensa en la restricción de ubicación como la especificación región en la que deben encontrarse los resultados y el sesgo de ubicación que especifica la región a la que los resultados deben estar cerca, pero pueden estar fuera en el área.

    Especifique la región como una ventana gráfica rectangular o como un círculo.

    • Un círculo se define por el punto central y el radio en metros. El radio debe estar entre 0.0 y 50,000.0, inclusive. Por ejemplo:

      // Define latitude and longitude coordinates of the center of the search area.
      LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874);
      
      // Use the builder to create a SearchByTextRequest object.
      // Set the radius of the search area to 500.0 meters.
      final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
        .setMaxResultCount(10)
        .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
      
    • Un rectángulo es un viewport de latitud y longitud, representado por dos en diagonal frente a puntos bajos y altos en diagonal. El punto más bajo marca el suroeste del rectángulo, y el punto alto representa el noreste esquina del rectángulo.

      Un viewport se considera un región cerrada, lo que significa que incluye su límite. Los límites de latitud debe variar entre -90 y 90 grados inclusive, y los límites de longitud debe oscilar entre -180 y 180 grados inclusive:

      • Si low = high, el viewport consta de lo siguiente: ese punto.
      • Si low.longitude > high.longitude, el el intervalo de longitud se invierte (el viewport cruza los 180 grados línea de longitud).
      • Si low.longitude = -180 grados y high.longitude = 180 grados, el viewport incluye todo longitudes.
      • Si low.longitude = 180 grados y high.longitude = -180 grados, el intervalo de longitud es vacío.
      • Si low.latitude > high.latitude, el está vacío.

      Tanto el valor bajo como el alto deben completarse, y la casilla representada no se puede vacío. Un viewport vacío genera un error.

      Por ejemplo, en un viewport rectangular, se puede ver Solicitudes de Text Search

      Para establecer el parámetro de personalización de ubicación, llama al método setLocationBias() cuando compiles el objeto SearchByTextRequest.

  • Restricción de ubicación

    Especifica un área de búsqueda. Los resultados fuera del área especificada no se muestran que se devuelven. Especifica la región como una ventana gráfica rectangular. Ver la descripción de Sesgo de ubicación para obtener información sobre cómo definir el viewport.

    Puedes especificar una restricción o un sesgo de ubicación pero no ambas. Piensa en la restricción de ubicación como la especificación región en la que deben encontrarse los resultados y el sesgo de ubicación que especifica la región a la que los resultados deben estar cerca, pero pueden estar fuera en el área.

    Para establecer el parámetro de restricción de ubicación, llama al método setLocationRestriction() cuando compiles el objeto SearchByTextRequest.

  • Cantidad máxima de resultados

    Especifica la cantidad máxima de resultados de lugares que se mostrarán. Debe ser un valor entre 1 y 20 (predeterminado), ambos incluidos.

    Para establecer el parámetro de cantidad máxima de resultados, llama al método setMaxResultCount() cuando compiles el objeto SearchByTextRequest.

  • Calificación mínima

    Restringe los resultados a aquellos cuya calificación promedio de los usuarios es superior a o igual a este límite. Los valores deben estar entre 0.0 y 5.0 (inclusive) en incrementos de 0.5. Por ejemplo: 0, 0.5, 1.0, ... , 5.0 inclusive. Los valores son y se redondea al punto decimal más cercano. Por ejemplo, un valor de 0.6 elimina todo resultados con una calificación inferior a 1.0.

    Para establecer el parámetro de calificación mínima, llama al método setMinRating() cuando compiles el objeto SearchByTextRequest.

  • Abierto ahora

    Si es true, devuelve solo los lugares que estén abiertos. en el momento en que se envía la consulta. Si es false, mostrar todas las empresas independientemente del estado abierto. Los lugares que no especifican los horarios de atención en la base de datos de Google Places son que se muestra si estableces este parámetro en false.

    Para configurar el parámetro “abrir ahora”, llama al método setOpenNow() cuando compiles el objeto SearchByTextRequest.

  • Niveles de precios

    De forma predeterminada, los resultados incluyen lugares que proporcionan servicios en todos los niveles de precios. Para restringir resultados para incluir solo lugares con niveles de precios determinados, puedes pasar una lista de números enteros correspondientes a los niveles de precios de los lugares que quieres mostrar:

    • 1: Place proporciona servicios económicos.
    • 2: Place proporciona servicios a precios moderados.
    • 3: Place ofrece servicios costosos.
    • 4: Place ofrece servicios muy costosos.

    Para establecer el parámetro de niveles de precios, llama al método setPriceLevels() cuando compiles el objeto SearchByTextRequest.

  • Preferencia de clasificación

    Especifica cómo se clasifican los resultados en la respuesta según el tipo de consulta:

    • Para una consulta categórica como “Restaurantes en la ciudad de Nueva York”, SearchByTextRequest.RankPreference.RELEVANCE (clasifica los resultados según la relevancia de la búsqueda) es el valor predeterminado. Puedes establecer la preferencia de clasificación en SearchByTextRequest.RankPreference.RELEVANCE o SearchByTextRequest.RankPreference.DISTANCE (clasifica los resultados por distancia).
    • Para una consulta no categórica, como “Mountain View, CA”, recomendamos no establezcas el parámetro de preferencia de clasificación.

    Para establecer el parámetro de preferencia de clasificación, llama al método setRankPreference() cuando compiles el objeto SearchByTextRequest.

  • Código de la región

    El código de región que se usa para dar formato a la respuesta, especificado como una valor de código CLDR de dos caracteres. Este parámetro también puede tener un efecto de sesgo en los resultados de la búsqueda. No hay un valor predeterminado.

    Si el nombre del país del campo de dirección en la respuesta coincide con el el código de región, el código de país se omite de la dirección.

    La mayoría de los códigos CLDR son idénticos a los códigos ISO 3166-1, con algunas excepciones notables. Por ejemplo, el ccTLD del Reino Unido es "uk" (.co.uk), mientras que el código ISO 3166-1 es "gb" (técnicamente para el del "Reino Unido de Gran Bretaña e Irlanda del Norte"). El parámetro puede afectar los resultados según la ley aplicable.

    Para establecer el parámetro de código de región, llama al método setRegionCode() cuando compiles el objeto SearchByTextRequest.

  • Filtrado de tipos estricto

    Se usa con el parámetro de tipo de inclusión. Cuando se establece en true, solo lugares que coincidan con los tipos especificados por include type. Si es false, el valor predeterminado, la respuesta puede contener lugares que no coinciden con los tipos especificados.

    Para establecer el parámetro de filtrado de tipos estricto, llama al método setStrictTypeFiltering() cuando compiles el objeto SearchByTextRequest.