Puedes usar el servicio de Places y la API de Geocoding con el SDK de Maps para Android para buscar regiones y obtener más información sobre lugares. El servicio de Places y la API de Geocoding son alternativas eficaces y estables para obtener IDs de lugar. Si ya usas IDs de lugar, puedes reutilizarlos con un diseño basado en datos aplicable a límites.
Agrega el servicio Places y Geocoding a tus apps del SDK de Maps para Android de las siguientes maneras:
- El SDK de Places para Android es una biblioteca de Android que contiene métodos para mostrar información sobre lugares.
- La API de Places muestra información sobre lugares por medio de solicitudes HTTP.
- La clase Geocoder puede geocodificar datos y hacer una geocodificación inversa de forma dinámica a partir de la entrada del usuario.
- La API de Geocoding te permite geocodificar direcciones conocidas y estáticas.
Usa el servicio de Places
Cómo usar Text Search (nueva) para encontrar un ID de lugar
Puedes usar la API de REST de Text Search (nueva) en la API de Places para obtener un ID de lugar que incluya datos de la región. Para ello, especifica places.id
en la máscara de campo. El uso de Text Search (nueva) para solicitar únicamente IDs de lugar no genera ningún cargo. Obtén más información.
Por ejemplo, para obtener el ID de lugar de Trinidad, California, puedes realizar la siguiente llamada a la API:
curl -X POST -d '{ "textQuery" : "Trinidad, CA" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.id' \ 'https://places.googleapis.com/v1/places:searchText'
Cómo usar Place Autocomplete para encontrar regiones
El servicio de Place Autocomplete en el SDK de Places para Android ofrece una forma conveniente de permitir que los usuarios busquen regiones. Para configurar el servicio de Place Autocomplete para que solo muestre regiones, usa AutocompleteSupportFragment.setTypesFilter(List)
para establecer el filtro de tipo en PlaceTypes.REGIONS
.
Cómo obtener detalles del lugar de una región
El servicio Place Details del SDK de Places para Android muestra datos de una región que pueden ser muy útiles. Por ejemplo, puedes hacer lo siguiente:
- Buscar IDs de lugar de límite según los nombres de lugares
- Obtener el viewport para aplicar zoom a un límite
- Obtener el tipo de función del límite (por ejemplo,
locality
) - Obtener la dirección con formato, que se resuelve como "Nombre del lugar, estado, país" en la región de Estados Unidos (por ejemplo, "Ottumwa, IA, EE.UU.")
- Obtener otros datos útiles, como fotos
Cómo usar la API de Geocoding
La API de Geocoding te permite convertir una dirección en coordenadas de latitud y longitud, y un ID de Place, o bien convertir coordenadas de latitud y longitud, o un ID de Place, en una dirección. Los siguientes usos son compatibles con el diseño basado en datos aplicable a límites:
- Usa Geocoding para obtener el viewport de una región.
- Aplica el filtrado de componentes a tu llamada a Geocoding para obtener los IDs de lugar de las áreas administrativas 1-4, la localidad o el código postal.
- Usa la geocodificación inversa para encontrar los IDs de lugar por coordenadas de latitud y longitud, o incluso mostrar los IDs de lugar de todos los componentes de una ubicación específica.
En el siguiente ejemplo, se usa una dirección (con codificación de URL) para realizar una solicitud a la API de Geocoding:
https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Pkwy%20Mountain%20View%20CA&key=YOUR_API_KEY
Puedes usar la geocodificación inversa para encontrar los IDs de lugar. En el siguiente ejemplo, la función del servicio de Geocoding muestra los IDs de lugar de todos los componentes de dirección en las coordenadas de latitud y longitud especificadas:
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&key=YOUR_API_KEY
Usa la geocodificación inversa con el filtrado de componentes para obtener el componente de dirección de uno o más de los siguientes tipos en la ubicación especificada:
administrativeArea
country
locality
postalCode
En la siguiente función de ejemplo, se muestra cómo se usa el servicio de Geocoding y se agregan restricciones de componentes con geocodificación inversa para obtener todos los componentes de dirección de la ubicación especificada solo para el tipo locality
:
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.864182,-87.676930&result_type=locality&key=YOUR_API_KEY