Vamos para o Redux, para as ações de locais que agora também recebem um objeto de localização e lembre-se de
que esse é um objeto que se
parece com isso, portanto possui uma chave lat e uma lng aqui.
Assim, em ações de locais, em locais de adição, obteremos esse objeto de localização e aqui, é claro, quero armazená-lo no meu banco
de dados, quero armazená-lo na minha
loja Redux e,
como mencionei, quero obter esse humano endereço legível, certo
e para
isso podemos usar outra API do Google.
Se você pesquisar a API de geocodificação do Google Maps, encontrará
este link aqui e é uma API que permite converter endereços em coordenadas ou coordenadas em endereços.
As coordenadas em endereços são chamadas de pesquisa inversa, para que possamos clicar em geocodificação reversa lá em baixo e isso
nos diz como isso funciona e, para isso, você precisa de uma chave da
API do Google
Maps que eu configurei anteriormente neste módulo e agora podemos envie uma
solicitação no final para este URL aqui. Assim, podemos copiar todo esse URL e enviar uma solicitação HTTP para isso.
Agora, isso não gerará uma imagem, mas nos devolverá alguns dados JSON; portanto, enviaremos
essa solicitação com a API de busca conforme você aprendeu no módulo HTTP, e eu farei isso aqui dentro do meu manipulador de
ação add place em essa função interna. Claro que você também pode terceirizá-lo em um arquivo
separado, se quiser manter esse arquivo um pouco mais enxuto.
Então, podemos usar a API de busca e enviar uma solicitação para um URL que eu criarei aqui como
uma string com tiques para trás, para que a injeção de dados dinâmicos seja mais fácil e para lá, eu quero copiar esse URL aqui e colá-lo
ali . Ok,
isso não
funciona, então deixe-me pegá-lo manualmente e agora colá-lo lá e, para a chave da API, é claro que quero
usar essa variável de ambiente
que configurei anteriormente, então importe o env do arquivo env.
Você deve se lembrar de que este é um arquivo que contém um objeto que contém minha chave de API.
Então agora eu posso substituir isso aqui, essa coisa chave da API aqui, eu posso substituir isso por esse ambiente injetado
dinamicamente.
o valor de googleapikey e, claro, latitude e longitude também precisam ser definidos dinamicamente.
Certifique-se de não excluir a vírgula entre esses dois,
mas agora aqui a latitude pode ser encontrada em meu local, que obviamente possui uma chave lat da maneira como a
configuramos, você sempre pode vê-la aqui embaixo, no console e localização como uma chave lng também,
por isso temos essas duas informações.
Isso envia uma solicitação get
para lá e tudo bem, porque precisamos enviar uma solicitação get e, é claro, podemos aguardar
a resposta e eu quero armazenar a resposta em uma constante para usá-la.
Em seguida, podemos verificar se essa resposta talvez não esteja bem, deve estar bem, mas se não estiver, podemos lançar um
novo erro aqui, algo deu errado
e, é claro, você também
pode configurar o tratamento de erros da mesma maneira que aprendeu no módulo
HTTP, mas
aqui presumo que isso funcione e agora
podemos obter os dados de resposta aguardando resposta. json, que extrai o corpo da
resposta e o converte em Javascript normal e, no momento, simplesmente consolarei o registro desses dados de
resposta para que possamos ter uma idéia do que está lá e
agora vamos tentar.
Vamos tentar adicionar um novo local, obter a localização do usuário e clicar em Salvar local, e
podemos fazer isso mesmo sem preencher
o restante, porque não temos validação aqui no iOS. Portanto, isso funciona, é claro que eu recebo um erro por falta
de dados, mas também obtemos o resultado da nossa solicitação HTTP e esse é um objeto enorme, agora
é realmente um objeto grande, como você pode ver.
Agora, no final, o que está lá, neste objeto grande, este é o objeto aqui, temos uma chave de resultados lá, que é uma
matriz e, lá, temos os diferentes componentes desse endereço, mas se você rolar um
pouco, veja além desta matriz, também temos essa chave de endereço formatada. Portanto, em nosso objeto de resultado aqui, não temos
apenas essa matriz, mas também temos endereço formatado e é isso que estou
procurando,
é isso que eu quero, quero esse endereço formatado, para que possamos extrair isso de nossa resposta dados aqui.
Então, em vez de registrá-lo aqui, apenas verifico se talvez não tenhamos uma chave de
resultados de dados de resposta, se isso estiver faltando, nesse caso, também lançarei um erro, mas se passarmos por essa verificação, eu
devo capaz de recuperá-lo.
Então, aqui eu posso derivar meu endereço acessando os resultados dos dados de resposta e, aí, o primeiro item de linha, é aí
que
realmente encontramos o endereço formatado e você pode simplesmente inspecionar esse objeto. Apenas mostrei a você para
ter uma idéia de sua estrutura completa .
É claro que os documentos oficiais também documentam como esses dados se parecem com os que você recebe. Então agora temos o endereço formatado aqui
e, portanto, posso recuperá-lo assim e agora temos tudo o que precisamos.
Quando agora armazenamos algo no banco de dados, posso usar meu endereço que acabei de extrair, em vez do
endereço fictício e, aqui, para a latitude, posso usar o local. lat, pela longitude,
sem surpresa, posso usar a localização. Para enviar dados, também podemos adicionar informações adicionais.
Podemos adicionar o endereço e, talvez, uma chave de cordas que contém um objeto em que temos lat e que é a localização. lat e lng, que
é a localização. Agora, todos esses dados são repassados ao nosso objeto de ação
e, portanto, atingem nosso redutor.
Portanto, no redutor, agora precisamos garantir o uso dos novos campos de endereço e de cabos que obtemos. Portanto, no redutor de locais,
queremos inicializar nosso local aqui com esses dados extras e, para isso, precisamos
primeiro ajustar o modelo de local para esperar esses dados.
Então, aqui, quero obter um endereço e quero latitude e longitude. Para que possamos armazenar tudo
isso, armazenar o endereço aqui, armazenar a
latitude e longitude, com o modelo preparado e com o modelo preparado, para recuperar esses dados
extras no redutor, devemos adicioná-lo quando quisermos. adicione um lugar.
Então aqui adicionamos como endereço a ação. placeData. endereço, porque foi o que acabei de
adicionar nas ações locais, essa chave de endereço e também podemos obter as coordenadas.
Então, para a latitude aqui, eu passo a ação. placeData. coords. lat e
pela longitude, passo em frente. placeData. coords. lng. Com isso, os locais são
inicializados aqui.
Agora, quando os carregamos do banco de dados, quando configuramos nossos locais, devemos, portanto, também inicializar
nosso modelo de local corretamente e pegar os dados que
já estão no banco de dados, portanto, mantenha o endereço, mantenha a latitude
e a longitude, então é isso bem simples e, portanto, agora, esperamos ter todos os dados e usá-los.
Agora, para ver se isso funciona, precisamos
trabalhar no item do local que estamos produzindo aqui na página inicial, podemos vê-lo no Android, para que também
mostremos o endereço aqui, talvez,
e também precisamos trabalhar no local tela de detalhes. Então, vamos trabalhar nisso para que possamos ver todas
as peças juntas.