La API de Geocoding v4 presenta varios extremos nuevos que reemplazan la funcionalidad de la versión 3 de la API. En esta guía, se muestra cómo migrar tu app para usar los nuevos extremos de la versión 4.
Puedes usar tus claves de API existentes con los nuevos extremos de la versión 4. Sin embargo, si solicitaste un aumento de la cuota en la versión 3 de la API, debes solicitar un aumento en las nuevas APIs de la versión 4. No hay una ruta de migración para los usuarios de JavaScript.
Migra desde la API de Geocoding v3
Si usas Geocoding para geocodificar direcciones, debes migrar al extremo de la versión 4 Geocode an address, que acepta una solicitud GET.
La API de v4 cambia los nombres, la estructura y la compatibilidad con varios parámetros. Te recomendamos que uses una máscara de campo para especificar los campos que deseas que se muestren en la respuesta.
Cambios en los parámetros de la solicitud
| Parámetro de la versión 3 | Parámetro de v4 | Notas |
|---|---|---|
address, components |
address |
La dirección no estructurada (v3 de address) ahora se pasa en la ruta de URL. Los filtros de componentes (v3 components) ahora se pasan como parámetros de búsqueda address.*. |
bounds |
locationBias.rectangle |
Se cambió el nombre y la estructura a objeto. |
language |
languageCode |
Se cambió el nombre. |
region |
regionCode |
Se cambió el nombre. |
extra_computations |
Eliminado |
Cambios en los campos de respuesta
| Campo de v3 | Campo v4 | Notas |
|---|---|---|
status, error_message |
Eliminado | La versión 4 usa códigos de estado HTTP y cuerpos de error. |
results.address_components.long_name/results.address_components.short_name |
results.addressComponents.longText/results.addressComponents.shortText |
Se cambió el nombre. |
results.geometry.location_type |
results.granularity |
Se cambió el nombre. |
results.geometry.location |
results.location |
Nombres de los campos: lat/lng -> latitude/longitude |
results.geometry.viewport |
results.viewport |
Nombres de los campos: northeast/southwest -> high/low |
results.postcode_localities |
results.postalCodeLocalities |
Se cambió el nombre. Ahora se devuelve para una o más localidades (se requiere la versión 3 > 1). |
results.partial_match |
Eliminado | |
| Nuevo | results.addressComponents.languageCode |
Es el idioma del componente de dirección específico. |
| Nuevo | results.bounds |
Límites explícitos con high/low. |
| Nuevo | results.place |
Es el nombre del recurso del lugar. |
| Nuevo | results.postalAddress |
Objeto PostalAddress estructurado. |
Migra desde la API de Geocoding inversa v3
Si usas la geocodificación inversa para convertir coordenadas en direcciones, debes migrar al extremo de la versión 4 Geocode inversa una ubicación, que acepta una solicitud GET.
La API de v4 cambia los nombres, la estructura y la compatibilidad con varios parámetros. Te recomendamos que uses una máscara de campo para especificar los campos que deseas que se muestren en la respuesta.
Cambios en los parámetros de la solicitud
| Parámetro de la versión 3 | Parámetro de v4 | Notas |
|---|---|---|
language |
languageCode |
Se cambió el nombre. |
region |
regionCode |
Se cambió el nombre. |
result_type |
types |
Se cambió el nombre; usa parámetros de consulta repetidos. |
location_type |
granularity |
Se cambió el nombre; usa parámetros de consulta repetidos. |
extra_computations |
Eliminado |
Cambios en los campos de respuesta
| Campo de v3 | Campo v4 | Notas |
|---|---|---|
status, error_message |
Eliminado | La versión 4 usa códigos de estado HTTP y cuerpos de error. |
results.address_components.long_name/results.address_components.short_name |
results.addressComponents.longText/results.addressComponents.shortText |
Se cambió el nombre. |
results.geometry.location_type |
results.granularity |
Se cambió el nombre. |
results.geometry.location |
results.location |
Nombres de los campos: lat/lng -> latitude/longitude |
results.geometry.viewport |
results.viewport |
Nombres de los campos: northeast/southwest -> high/low |
| Nuevo | results.addressComponents.languageCode |
Es el idioma del componente de dirección específico. |
| Nuevo | results.bounds |
Límites explícitos con high/low. |
| Nuevo | results.place |
Es el nombre del recurso del lugar. |
| Nuevo | results.postalAddress |
Objeto PostalAddress estructurado. |
Migra desde la API de Place Geocoding v3
Si usas place_id para obtener la dirección de un ID de lugar específico con la versión 3 de la API de Geocoding, debes migrar al extremo Place Geocoding de la versión 4, que acepta una solicitud GET.
La API de v4 cambia los nombres, la estructura y la compatibilidad con varios parámetros. Te recomendamos que uses una máscara de campo para especificar los campos que deseas que se muestren en la respuesta.
Cambios en los parámetros de la solicitud
| Parámetro de la versión 3 | Parámetro de v4 | Notas |
|---|---|---|
place_id |
Campo place en el proto de solicitud |
El ID de lugar ahora se proporciona como un parámetro de ruta places/{place}, por ejemplo: https://geocode.googleapis.com/v4beta/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw. Este campo se asigna al campo de lugar en la solicitud subyacente. |
language |
languageCode |
Se cambió el nombre. |
region |
regionCode |
Se cambió el nombre. |
Cambios en los campos de respuesta
| Campo de v3 | Campo v4 | Notas |
|---|---|---|
status, error_message |
Eliminado | La versión 4 usa códigos de estado HTTP y cuerpos de error. |
results |
(root) | La versión 4 devuelve un solo objeto de resultado, no un array results. |
results.address_components.long_name/results.address_components.short_name |
addressComponents.longText/addressComponents.shortText |
Se cambió el nombre. |
results.geometry.location_type |
granularity |
Se cambió el nombre. |
results.geometry.location |
location |
Nombres de los campos: lat/lng -> latitude/longitude |
results.geometry.viewport |
viewport |
Nombres de los campos: northeast/southwest -> high/low |
results.postcode_localities |
postalCodeLocalities |
Se cambió el nombre. Ahora se devuelve para una o más localidades (se requiere la versión 3 > 1). |
| Nuevo | addressComponents.languageCode |
Es el idioma del componente de dirección específico. |
| Nuevo | bounds |
Límites explícitos con high/low. |
| Nuevo | place |
Es el nombre del recurso del lugar. |
| Nuevo | postalAddress |
Objeto PostalAddress estructurado. |
Migra de los datos hiperlocales de Geocoding a los destinos
Las siguientes funciones de la API de Geocoding v3 se reemplazan por el extremo SearchDestinations de la API de Geocoding v4:
- Entradas
- Puntos de navegación
- Esquemas de edificios
- Terrenos
Si usabas la API de Geocoding v3 para las funciones anteriores, usa este documento para obtener ayuda y usar el extremo de SearchDestinations en su lugar para obtener estas funciones. En este documento, se explica en qué parte de la respuesta de la API de SearchDestinations se encuentran estas funciones y las diferencias en la forma en que se representan en las respuestas de la API entre la API de Geocoding v3 y el extremo de SearchDestinations de la API de Geocoding v4.
Entradas
Para obtener las entradas asociadas a un destination, usa el campo destination.entrances.
Ten en cuenta que el formato de un entrance es ligeramente diferente del formato de entrada en la API de Geocoding v3. Cada entrada en destination.entrances tiene los siguientes campos:
displayName: Es un nuevo campo opcional que tendrá un nombre legible para la entrada, por ejemplo, "Puerta B".location: Es una ubicación de tipoLatLng, que es diferente del formato que se usa en la API de Geocoding v3.tags: Es igual que el campotagsde las entradas de la API de Geocoding v3.place: Es análogo al campobuildingPlaceIdde las entradas de la API de Geocoding v3. Sin embargo, el ID de lugar en este campo podría ser para un lugar de cualquier tipo, no necesariamente solo un edificio.
Puntos de navegación
Para obtener los puntos de navegación asociados con un destination, usa el campo destination.navigationPoints.
Ten en cuenta que el formato de un navigationPoint es ligeramente diferente del formato de punto de navegación en la API de Geocoding v3. Cada punto de navegación en destination.navigationPoints tiene los siguientes campos:
displayName: Es un nuevo campo opcional que tendrá un nombre legible para el punto de navegación, por ejemplo, “5th Ave”.location: Es una ubicación de tipoLatLng, que es diferente del formato que se usa en la API de Geocoding v3.travelModes: Es similar al camporestrictedTravelModesde los puntos de navegación de la versión 3 de la API de Geocoding. Los valores de enumeración posibles son los mismos. La única diferencia es que este campo ahora representa los modos de viaje aceptables para el punto de navegación, en lugar de los modos de viaje restringidos.usage: Es un campo nuevo que contiene los casos de uso admitidos por el punto de navegación. Ten en cuenta que la mayoría de los puntos de navegación tendrán un uso deUNKNOWN, pero eso no significa necesariamente que el uso del punto de navegación esté restringido de alguna manera.
Esquemas de edificios
Para obtener los contornos de los edificios asociados a un objeto destination, debes usar el campo displayPolygon de los objetos placeView en el objeto destination que representan edificios. Para cada placeView, puedes verificar si es un edificio con el campo placeView.structureType. Si el tipo de estructura es BUILDING, puedes obtener el esquema del campo placeView.displayPolygon. El objeto placeView también tendrá campos adicionales para el edificio que no estaban en la API de Geocoding v3.
Un objeto destination puede tener un objeto placeView que represente un edificio en los siguientes campos:
destination.primary: Es el lugar principal del destino.destination.containingPlaces: Es un campo repetido que puede contener lugares más grandes que "contienen" el lugar principal. Por ejemplo, si el lugar principal es unsubpremise,containingPlacessuele contener elplaceViewque representa el edificio.destination.subDestinations: Es un campo repetido que puede contener subdestinos del lugar principal. Por ejemplo, las unidades de departamentos individuales de un edificio. Por lo general, este campo no tendrá unplaceViewque represente un edificio.
Ten en cuenta que el formato de placeView.displayPolygon coincide con el formato de contorno de edificio en la API de Geocodificación v3, que es el formato GeoJSON, con el formato RFC 7946.
Terrenos
Al igual que con los esquemas de edificios, para obtener los terrenos asociados a un destination, debes usar el campo displayPolygon de los objetos placeView en el destination que representan terrenos. Para cada placeView, puedes verificar si es un motivo con el campo placeView.structureType. Si el tipo de estructura es GROUNDS, puedes obtener el esquema del campo placeView.displayPolygon. El objeto placeView también tendrá campos adicionales para los motivos que no estaban en la API de Geocoding v3.
Un objeto destination puede tener un objeto placeView que represente un motivo en los siguientes campos:
destination.primarydestination.containingPlacesdestination.subDestinations
Ten en cuenta que el formato de placeView.displayPolygon coincide con el formato de esquema de terrenos en la API de Geocoding v3, que es el formato GeoJSON, con el formato RFC 7946.
Usa una máscara de campo para solicitar estas funciones
El extremo SearchDestinations requiere una máscara de campo, como se explica en Cómo elegir los campos que se devolverán. La máscara de campo se puede establecer en * para devolver todos los campos, o bien puedes establecerla en los campos específicos que deseas recibir. Por ejemplo, la siguiente solicitud a la API establece la máscara de campo para recibir todos los campos necesarios para obtener las entradas, los puntos de navegación, los esquemas de edificios y los terrenos de un destino:
curl -X POST -d '{"place": "places/ChIJG3kh4hq6j4AR_XuFQnV0_t8"}' \
-H "X-Goog-Api-Key: API_KEY" \
-H "Content-Type: application/json" \
-H "X-Goog-FieldMask: destinations.entrances,destinations.navigationPoints,destinations.primary,destinations.containingPlaces,destinations.subDestinations" \
https://geocode.googleapis.com/v4alpha/geocode/destinations