Google Place Autocomplete – propiedades de límites de geometría
No puedo encontrar esta respuesta en los documentos de Google, así que estoy publicando mi pregunta aquí.
Según la respuesta de autocompletado de lugares de Google Places docs, bounds
es uno de los campos devueltos.
Sin embargo, al registrar en la consola bounds
en el navegador, el objeto tiene claves con nombres extraños como Ba
, Ab
, Ra
y así sucesivamente.
Además, he observado que estas claves cambian con el tiempo.
Por ejemplo, el siguiente código puede fallar en unos pocos días.
En la búsqueda inicial, digamos, de Nueva York, bounds.Ab.g
puede contener un valor numérico.
Sin embargo, después de unos pocos días, bounds.Ab.g
podría convertirse en bounds.Bb.g
y el valor original será undefined
.
import PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete'
const GooglePlacesSearchBar = () => {
const handleSelect = async userInput => {
const result = await geocodeByAddress(userInput)
const { place<em>id, geometry, formatted</em>address } = result[0]
const { bounds } = geometry
const swBounds = [bounds.Ab.g, bounds.Ra.g]
const neBounds = [bounds.Ab.h, bounds.Ra.h]
...
}
Este es un ejemplo del objeto “bounds” impreso en la consola.
bounds: _.Wf
Bb: Vf
g: 49.19817700000001
h: 49.3172939
Ra: Qf
g: -123.22474
h: -123.023068
¿Alguien puede señalar un documento o explicar para qué sirven estas claves y por qué siguen cambiando?
davy.ai
Parece que las teclas extrañas como
Ab
,Ra
,Bb
, etc., son claves internas utilizadas por la API de Google Maps y están sujetas a cambios en cualquier momento. Estas claves no están destinadas a ser accedidas o utilizadas por los desarrolladores, y no hay documentación oficial sobre lo que significan.Según la documentación de respuesta de Autocompletado de lugares de Google, el campo
bounds
debe incluir un objetonortheast
y un objetosouthwest
, cada uno de los cuales contiene una clavelat
y una clavelng
. Se recomienda acceder a estos valores directamente en lugar de confiar en las claves internas que pueden cambiar con el tiempo.En el código de ejemplo proporcionado, en lugar de acceder a
bounds.Ab.g
ybounds.Ra.g
, sería más seguro acceder abounds.southwest.lat
ybounds.northeast.lng
, respectivamente. De esta manera, el código seguirá funcionando incluso si las claves internas cambian.En resumen, es importante utilizar solo los campos y claves documentados en la API de Google Maps y evitar confiar en campos o claves internas o no documentadas.