Una solicitud de Nearby Search (nueva) toma como entrada la región de búsqueda especificada como un círculo, definido por las coordenadas de latitud y longitud del punto central del círculo y el radio en metros. La solicitud muestra una lista de lugares coincidentes, cada uno representado por un objeto Place
, dentro del área de búsqueda especificada.
De forma predeterminada, la respuesta contiene lugares de todos los tipos dentro del área de búsqueda. De forma opcional, puedes filtrar la respuesta especificando una lista de tipos de lugares para incluirlos o excluirlos de forma explícita. Por ejemplo, puedes especificar que se incluyan solo los lugares de la respuesta que sean del tipo "restaurante", "panadería" y "cafetería", o bien excluir todos los lugares del tipo "escuela".
Solicitudes de Nearby Search (nuevo)
Para realizar una solicitud de Nearby Search (nueva), llama a PlacesClient.searchNearby
y pasa un objeto SearchNearbyRequest
que defina los parámetros de la solicitud.
El objeto SearchNearbyRequest
especifica todos los parámetros obligatorios y opcionales para la solicitud. Entre los parámetros obligatorios, se incluyen los siguientes:
- Es la lista de campos que se mostrarán en el objeto
Place
, que también se conoce como máscara de campo. Si no especificas al menos un campo en la lista de campos o si la omites, la llamada mostrará un error. - Es la restricción de ubicación para el área de búsqueda, definida como un par de latitud/longitud y un valor de radio, en metros.
En este ejemplo de solicitud de búsqueda cercana, se especifica que los objetos Place
de la respuesta contienen los campos de lugar Place.Field.ID
y Place.Field.DISPLAY_NAME
para cada objeto Place
en los resultados de la búsqueda. También filtra la respuesta para que solo muestre lugares de tipo "restaurante" y "cafetería", pero excluye los lugares de tipo "pizza_restaurant" y "american_restaurant".
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME); // Define the search area as a 1000 meter diameter circle in New York, NY. LatLng center = new LatLng(40.7580, -73.9855); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 1000); // Define a list of types to include. final List<String> includedTypes = Arrays.asList("restaurant", "cafe"); // Define a list of types to exclude. final List<String> excludedTypes = Arrays.asList("pizza_restaurant", "american_restaurant"); // Use the builder to create a SearchNearbyRequest object. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setExcludedTypes(excludedTypes) .setMaxResultCount(10) .build()); // Call placesClient.searchNearby() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
Respuestas de Nearby Search (nuevo)
La clase SearchNearbyResponse
representa la respuesta de una solicitud de búsqueda. Un objeto SearchNearbyResponse
contiene lo siguiente:
- Es una lista de objetos
Place
que representan todos los lugares coincidentes, con un objetoPlace
por lugar coincidente. - Cada objeto
Place
solo contiene los campos definidos por la lista de campos que se pasó en la solicitud.
Por ejemplo, en la solicitud, definiste una lista de campos de la siguiente manera:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Esta lista de campos significa que cada objeto Place
de la respuesta solo contiene el ID y el nombre de cada lugar coincidente. Luego, puedes usar los métodos Place.getId()
y Place.getName()
para acceder a estos campos en cada objeto Place
.
Para ver más ejemplos de acceso a datos en un objeto Place
, consulta Cómo acceder a los campos de datos de objetos de Place.
Parámetros obligatorios
Usa el objeto SearchNearbyRequest
para especificar los parámetros obligatorios de la búsqueda.
Lista de campos
Cuando solicitas detalles de un lugar, debes especificar los datos que se mostrarán en el objeto
Place
del lugar como una máscara de campo. Para definir la máscara de campo, pasa un array de valores dePlace.Field
al objetoSearchNearbyRequest
. El enmascaramiento de campos es una práctica de diseño recomendada para garantizar que no solicites datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos de facturación adicionales.Especifica uno o más de los siguientes campos:
Los siguientes campos activan el SKU Nearby 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.PRIMARY_TYPE
,Place.Field.PRIMARY_TYPE_DISPLAY_NAME
,Place.Field.ID
,Place.Field.NAME
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
Los siguientes campos activan el SKU de Nearby Search (Advanced):
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.CURRENT_SECONDARY_OPENING_HOURS
,Place.Field.INTERNATIONAL_PHONE_NUMBER
,Place.Field.NATIONAL_PHONE_NUMBER
,Place.Field.OPENING_HOURS
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.USER_RATING_COUNT
,Place.Field.WEBSITE_URI
,
Los siguientes campos activan el SKU de Nearby Search (Preferred):
Place.Field.ALLOWS_DOGS
,Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.EV_CHARGE_OPTIONS
,Place.Field.FUEL_OPTIONS
,Place.Field.GOOD_FOR_CHILDREN
,Place.Field.GOOD_FOR_GROUPS
,Place.Field.GOOD_FOR_WATCHING_SPORTS
,Place.Field.LIVE_MUSIC
,Place.Field.MENU_FOR_CHILDREN
,Place.Field.OUTDOOR_SEATING
,Place.Field.PARKING_OPTIONS
,Place.Field.PAYMENT_OPTIONS
,Place.Field.RESERVABLE
,Place.Field.RESTROOM
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_COCKTAILS
,Place.Field.SERVES_COFFEE
,Place.Field.SERVES_DESSERT
,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 objetoSearchNearbyRequest
.En el siguiente ejemplo, se define una lista de dos valores de campo para especificar que el objeto
Place
que muestra una solicitud contiene los camposPlace.Field.ID
yPlace.Field.DISPLAY_NAME
:
// Define a list of fields to include in the response for each returned place. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Restricción de ubicación
Un objeto
LocationRestriction
que define la región de búsqueda especificada como un círculo, definido por el punto central y el radio en metros. El radio debe ser superior a 0.0 y menor o igual a 50000.0. Ten en cuenta que, si especificas un radio demasiado pequeño, se mostraráZERO_RESULTS
como respuesta.Para establecer el parámetro de restricción de ubicación, llama al método
setLocationRestriction()
cuando compiles el objetoSearchNearbyRequest
.
Parámetros opcionales
Usa el objeto SearchNearbyRequest
para especificar los parámetros opcionales de la búsqueda.
-
Tipos y tipos principales
Te permite especificar una lista de tipos de la Tabla A que se usan para filtrar los resultados de la búsqueda. Se pueden especificar hasta 50 tipos en cada categoría de restricción de tipo.
Un lugar solo puede tener un tipo principal único de los tipos de la Tabla A asociados con él. Por ejemplo, el tipo principal podría ser
"mexican_restaurant"
o"steak_house"
. UsaincludedPrimaryTypes
yexcludedPrimaryTypes
para filtrar los resultados según el tipo principal de un lugar.Un lugar también puede tener varios valores de tipo de los tipos de la Tabla A asociados con él. Por ejemplo, un restaurante podría tener los siguientes tipos:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
y"establishment"
. UsaincludedTypes
yexcludedTypes
para filtrar los resultados de la lista de tipos asociados con un lugar.Cuando especificas un tipo principal general, como
"restaurant"
o"hotel"
, la respuesta puede contener lugares con un tipo principal más específico que el especificado. Por ejemplo, especificas que se incluya un tipo principal de"restaurant"
. Luego, la respuesta puede contener lugares con un tipo principal de"restaurant"
, pero también puede contener lugares con un tipo principal más específico, como"chinese_restaurant"
o"seafood_restaurant"
.Si se especifica una búsqueda con varias restricciones de tipo, solo se muestran los lugares que satisfacen todas las restricciones. Por ejemplo, si especificas
includedTypes = Arrays.asList("restaurant")
yexcludedPrimaryTypes = Arrays.asList("steak_house")
, los lugares que se muestran proporcionan servicios relacionados con"restaurant"
, pero no funcionan principalmente como"steak_house"
.Para ver un ejemplo de cómo usar
includedTypes
yexcludedTypes
, consulta Solicitudes de Nearby Search (nueva).Tipos incluidos
Es una lista de los tipos de lugares de la Tabla A que se deben buscar. Si se omite este parámetro, se muestran lugares de todos los tipos.
Para establecer el parámetro de tipos incluidos, llama al método
setIncludedTypes()
cuando compiles el objetoSearchNearbyRequest
.Tipos excluidos
Es una lista de los tipos de lugares de la Tabla A que se excluirán de una búsqueda.
Si especificas
includedTypes
(como"school"
) yexcludedTypes
(como"primary_school"
) en la solicitud, la respuesta incluirá lugares categorizados como"school"
, pero no como"primary_school"
. La respuesta incluye lugares que coinciden con al menos uno de losincludedTypes
y ninguno de losexcludedTypes
.Si hay algún tipo en conflicto, como un tipo que aparece en
includedTypes
yexcludedTypes
, se muestra un errorINVALID_REQUEST
.Para establecer el parámetro de tipos excluidos, llama al método
setExcludedTypes()
cuando compiles el objetoSearchNearbyRequest
.Tipos principales incluidos
Es una lista de los tipos de lugares principales de la Tabla A que se incluyen en una búsqueda.
Para establecer el parámetro de tipos principales incluidos, llama al método
setIncludedPrimaryTypes()
cuando compiles el objetoSearchNearbyRequest
.Tipos principales excluidos
Es una lista de los tipos de lugares principales de la Tabla A que se deben excluir de una búsqueda.
Si hay tipos principales en conflicto, como un tipo que aparece en
includedPrimaryTypes
yexcludedPrimaryTypes
, se muestra un errorINVALID_ARGUMENT
.Para establecer el parámetro de tipos principales excluidos, llama al método
setExcludedPrimaryTypes()
cuando compiles el objetoSearchNearbyRequest
. -
Recuento máximo de resultados
Especifica la cantidad máxima de resultados de lugares que se mostrarán. Debe estar comprendido entre 1 y 20 (valor predeterminado) inclusive.
Para establecer el parámetro de recuento de resultados máximo, llama al método
setMaxResultCount()
cuando compiles el objetoSearchNearbyRequest
. -
Preferencia de clasificación
Es el tipo de clasificación que se usará. Si se omite este parámetro, los resultados se clasifican por popularidad. Puede ser una de las siguientes opciones:
POPULARITY
(predeterminada): Ordena los resultados según su popularidad.DISTANCE
Ordena los resultados en orden ascendente según su distancia desde la ubicación especificada.
Para establecer el parámetro de preferencia de clasificación, llama al método
setRankPreference()
cuando compiles el objetoSearchNearbyRequest
. -
Código de la región
Es el código de región que se usa para dar formato a la respuesta, especificado como un valor de código CLDR de dos caracteres. No hay un valor predeterminado.
Si el nombre del país del campo
FORMATTED_ADDRESS
en la respuesta coincide con elregionCode
, se omite el código de país deFORMATTED_ADDRESS
.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 su código ISO 3166-1 es “gb” (técnicamente para la entidad de “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 objetoSearchNearbyRequest
.
Mostrar atribuciones en tu aplicación
Cuando en tu aplicación se muestra información obtenida de PlacesClient
, como fotos y opiniones, también deben exhibirse las atribuciones requeridas.
Para obtener más información, consulta Políticas del SDK de Places para Android.