Vayamos a Redux, a las acciones de lugares que ahora también recibe un objeto de ubicación y tenga en cuenta que
este es un objeto que se ve así,
por lo que tiene una tecla lat y una tecla lng aquí.
Entonces, en acciones de lugares, en lugar adicional, obtendremos este objeto de ubicación y aquí, por supuesto, quiero almacenarlo en mi base
de datos, quiero almacenarlo en mi
tienda Redux y,
como mencioné, quiero obtener este humano dirección legible, correcta
y para
eso podemos usar otra API de Google.
Si busca la API de geocodificación de Google Maps, encontrará este enlace
aquí y esta es una API que le permite traducir direcciones en coordenadas o coordenadas en direcciones.
Las coordenadas en direcciones se llaman una búsqueda inversa, por lo que podemos hacer clic en geocodificación inversa allí y
esto nos dice cómo funciona y para eso, necesita una clave API de
Google Maps
que configuré anteriormente en este módulo y ahora podemos envíe una
solicitud al final a esta URL aquí. Entonces podemos copiar esta URL completa y enviar una solicitud HTTP a esto.
Ahora, esto no generará una imagen, pero nos devolverá algunos datos JSON, por lo que
enviaremos esa solicitud con la API de recuperación tal como la aprendió en el módulo HTTP y simplemente lo haré aquí dentro de mi controlador
de acción agregar lugar en Esta función interna. Por supuesto, también puede externalizarlo en un archivo
separado si desea mantener este archivo un poco más ágil.
Entonces, podemos usar la API de recuperación y enviar una solicitud a una URL que crearé aquí como una
cadena con marcas de retroceso para que la inyección de datos dinámicos sea más fácil y allí, quiero copiar esta URL aquí y pegarla allí
. De
acuerdo, eso
no funciona, así que permítanme tomarlo manualmente y luego pegarlo allí y para la clave API, por supuesto, quiero usar
esta variable de entorno que
configuré anteriormente, así que importe env desde el archivo env.
Quizás recuerdes que este es un archivo que contiene un objeto que contiene mi clave API.
Así que ahora puedo reemplazar esto aquí, esta cosa clave de API aquí, puedo reemplazar esto con este entorno inyectado
dinámicamente.
El valor de googleapikey y, por supuesto, la latitud y la longitud también deben establecerse dinámicamente.
Asegúrese de no eliminar la coma entre estos dos, pero ahora
aquí se puede encontrar la latitud en mi ubicación, que por supuesto tiene una tecla lat de la forma en que la configuramos, siempre
puede ver eso aquí abajo en la parte inferior de la consola y ubicación como una clave lng también,
por lo que tenemos estos dos datos.
Esto envía una solicitud de
obtención allí y eso está bien porque necesitamos enviar una solicitud de obtención y, por supuesto, podemos
esperar la respuesta y quiero almacenar la respuesta en una constante para usarla.
A continuación, podemos verificar si esta respuesta tal vez no está bien, debería estar bien, pero si no lo está, podríamos lanzar
un nuevo error aquí, algo salió mal
y, por supuesto, también puede
configurar el manejo de errores de la misma manera que aprendió en el
módulo HTTP,
pero aquí supongo que esto funcionará y ahora
podemos obtener los datos de respuesta esperando respuesta. json que extrae el cuerpo de la
respuesta y lo convierte a Javascript normal y por el momento, simplemente voy a consolar los datos de
respuesta para que tengamos una idea de lo que hay allí y ahora
vamos a intentarlo.
Intentemos agregar un nuevo lugar, obtenga la ubicación del usuario y haga clic en guardar lugar
y podemos hacerlo incluso sin completar
el resto porque no tenemos validación aquí en iOS. Así que esto funciona, por supuesto, recibo un error debido a la falta
de datos, pero también obtenemos el resultado de nuestra solicitud HTTP y ese es un objeto súper enorme allí,
ahora es realmente un objeto grande como se puede ver.
Ahora, al final, lo que hay allí, en este objeto grande, este es el objeto aquí, tenemos una clave de resultados allí, que es una matriz y
allí, tenemos los diferentes componentes de esta dirección, pero si se desplaza un poco hacia
abajo, ver además de esta matriz, también tenemos esta clave de dirección formateada. Entonces, en nuestro objeto de resultado aquí, no solo tenemos
esa matriz, sino que también tenemos una dirección formateada y eso es lo que
estoy
buscando, esto es lo que quiero, quiero esta dirección formateada, para que podamos extraer eso de nuestra respuesta datos aquí.
Entonces, en lugar de registrarlo aquí, solo verifico si tal vez no tenemos una clave de
resultados de datos de respuesta, si eso de alguna manera falta, en ese caso también arrojaré un error, pero si lo superamos, entonces debería
estar capaz de recuperarlo.
Entonces aquí puedo derivar mi dirección accediendo a los resultados de los datos de respuesta y luego allí, la primera línea de pedido,
ahí
es donde realmente encontramos la dirección formateada y simplemente puede inspeccionar este objeto que acabo de mostrarle para
tener una idea de su estructura completa .
Por supuesto, los documentos oficiales también documentan cómo se ven estos datos. Así que ahora tenemos la dirección formateada aquí
y, por lo tanto, puedo recuperarla así y ahora tenemos todo lo que necesitamos.
Cuando ahora almacenamos algo en la base de datos, puedo usar mi dirección que acabo de extraer, en lugar de
la dirección ficticia y aquí para la latitud, puedo usar la ubicación. lat, para la longitud, como
era de esperar, puedo usar la ubicación. lng y para el envío de datos, también podemos agregar información adicional.
Podemos agregar la dirección y tal vez una clave coords que contiene un objeto donde tenemos lat, que es la ubicación. lat y lng que
es la ubicación. lng y ahora todos esos datos se pasan con nuestro objeto de acción y,
por lo tanto, llegan a nuestro reductor.
Entonces, en el reductor, ahora debemos asegurarnos de usar la nueva dirección y los campos de coordenadas que obtenemos. Entonces, en el reductor de lugares,
queremos inicializar nuestro lugar aquí con esos datos adicionales y para eso primero tenemos
que ajustar el modelo de lugar para esperar esos datos.
Entonces aquí, quiero obtener una dirección y quiero obtener una latitud y longitud. Entonces podemos almacenar todo eso, almacenar la
dirección
aquí, almacenar la latitud y la
longitud, con eso el modelo está preparado y con el modelo preparado, para recuperar estos datos adicionales
en el reductor, debemos agregar esto cuando agregar un lugar
Entonces aquí agregamos como dirección, la acción. placeData. dirección porque eso es lo que acabo de
agregar en las acciones de lugares aquí, esta tecla de dirección y también podemos obtener las coordenadas.
Entonces, para la latitud aquí, paso la acción. placeData. coords. Lat y por
la longitud, paso la acción. placeData. coords. lng. Con eso, los lugares se
inicializan aquí.
Ahora, cuando los cargamos desde la base de datos, cuando establecemos nuestros lugares, también deberíamos inicializar nuestro modelo
de lugar correctamente y tomar los datos que ya están en
la base de datos, así que mantenga la dirección, la latitud y la longitud, así
que eso es bastante sencillo y, por lo tanto, ahora, esperamos tener todos los datos y usar todos los datos.
Ahora, para ver si eso funciona, tenemos que
trabajar en el elemento del lugar que publicamos aquí en la página de inicio, podemos verlo en Android, para que también
podamos mostrar la dirección aquí tal
vez y también necesitamos trabajar en el lugar Pantalla de detalles. Así que trabajemos en eso para que podamos ver todas
las piezas juntas.