1 00:00:02,170 --> 00:00:07,360 Vamos para o Redux, para as ações de locais que agora também recebem um objeto de localização e lembre-se de 2 00:00:07,390 --> 00:00:09,490 que esse é um objeto que se 3 00:00:09,490 --> 00:00:12,610 parece com isso, portanto possui uma chave lat e uma lng aqui. 4 00:00:12,610 --> 00:00:21,730 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 5 00:00:21,730 --> 00:00:23,920 de dados, quero armazená-lo na minha 6 00:00:23,920 --> 00:00:25,460 loja Redux e, 7 00:00:25,540 --> 00:00:28,930 como mencionei, quero obter esse humano endereço legível, certo 8 00:00:28,960 --> 00:00:30,010 e para 9 00:00:30,100 --> 00:00:33,130 isso podemos usar outra API do Google. 10 00:00:33,130 --> 00:00:37,610 Se você pesquisar a API de geocodificação do Google Maps, encontrará 11 00:00:37,690 --> 00:00:43,780 este link aqui e é uma API que permite converter endereços em coordenadas ou coordenadas em endereços. 12 00:00:44,590 --> 00:00:52,870 As coordenadas em endereços são chamadas de pesquisa inversa, para que possamos clicar em geocodificação reversa lá em baixo e isso 13 00:00:52,870 --> 00:00:58,230 nos diz como isso funciona e, para isso, você precisa de uma chave da 14 00:00:58,230 --> 00:00:59,530 API do Google 15 00:01:00,130 --> 00:01:04,960 Maps que eu configurei anteriormente neste módulo e agora podemos envie uma 16 00:01:04,960 --> 00:01:10,780 solicitação no final para este URL aqui. Assim, podemos copiar todo esse URL e enviar uma solicitação HTTP para isso. 17 00:01:10,810 --> 00:01:15,130 Agora, isso não gerará uma imagem, mas nos devolverá alguns dados JSON; portanto, enviaremos 18 00:01:15,130 --> 00:01:22,460 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 19 00:01:22,460 --> 00:01:27,340 ação add place em essa função interna. Claro que você também pode terceirizá-lo em um arquivo 20 00:01:27,460 --> 00:01:29,920 separado, se quiser manter esse arquivo um pouco mais enxuto. 21 00:01:29,980 --> 00:01:36,730 Então, podemos usar a API de busca e enviar uma solicitação para um URL que eu criarei aqui como 22 00:01:36,730 --> 00:01:45,620 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 23 00:01:45,620 --> 00:01:47,080 ali . Ok, 24 00:01:47,090 --> 00:01:47,930 isso não 25 00:01:47,930 --> 00:01:56,310 funciona, então deixe-me pegá-lo manualmente e agora colá-lo lá e, para a chave da API, é claro que quero 26 00:01:56,310 --> 00:01:58,520 usar essa variável de ambiente 27 00:01:58,520 --> 00:02:02,980 que configurei anteriormente, então importe o env do arquivo env. 28 00:02:02,990 --> 00:02:07,180 Você deve se lembrar de que este é um arquivo que contém um objeto que contém minha chave de API. 29 00:02:07,220 --> 00:02:13,040 Então agora eu posso substituir isso aqui, essa coisa chave da API aqui, eu posso substituir isso por esse ambiente injetado 30 00:02:13,460 --> 00:02:14,170 dinamicamente. 31 00:02:14,180 --> 00:02:20,870 o valor de googleapikey e, claro, latitude e longitude também precisam ser definidos dinamicamente. 32 00:02:20,870 --> 00:02:23,840 Certifique-se de não excluir a vírgula entre esses dois, 33 00:02:23,840 --> 00:02:30,460 mas agora aqui a latitude pode ser encontrada em meu local, que obviamente possui uma chave lat da maneira como a 34 00:02:30,460 --> 00:02:35,620 configuramos, você sempre pode vê-la aqui embaixo, no console e localização como uma chave lng também, 35 00:02:35,620 --> 00:02:37,880 por isso temos essas duas informações. 36 00:02:37,960 --> 00:02:39,990 Isso envia uma solicitação get 37 00:02:40,000 --> 00:02:45,830 para lá e tudo bem, porque precisamos enviar uma solicitação get e, é claro, podemos aguardar 38 00:02:45,970 --> 00:02:50,700 a resposta e eu quero armazenar a resposta em uma constante para usá-la. 39 00:02:50,760 --> 00:02:57,690 Em seguida, podemos verificar se essa resposta talvez não esteja bem, deve estar bem, mas se não estiver, podemos lançar um 40 00:02:57,690 --> 00:02:59,930 novo erro aqui, algo deu errado 41 00:02:59,970 --> 00:03:01,630 e, é claro, você também 42 00:03:01,710 --> 00:03:05,850 pode configurar o tratamento de erros da mesma maneira que aprendeu no módulo 43 00:03:05,860 --> 00:03:06,890 HTTP, mas 44 00:03:07,200 --> 00:03:09,640 aqui presumo que isso funcione e agora 45 00:03:09,840 --> 00:03:14,970 podemos obter os dados de resposta aguardando resposta. json, que extrai o corpo da 46 00:03:14,980 --> 00:03:21,730 resposta e o converte em Javascript normal e, no momento, simplesmente consolarei o registro desses dados de 47 00:03:21,730 --> 00:03:26,780 resposta para que possamos ter uma idéia do que está lá e 48 00:03:26,920 --> 00:03:28,340 agora vamos tentar. 49 00:03:29,230 --> 00:03:34,960 Vamos tentar adicionar um novo local, obter a localização do usuário e clicar em Salvar local, e 50 00:03:34,960 --> 00:03:37,350 podemos fazer isso mesmo sem preencher 51 00:03:37,370 --> 00:03:43,840 o restante, porque não temos validação aqui no iOS. Portanto, isso funciona, é claro que eu recebo um erro por falta 52 00:03:43,840 --> 00:03:48,500 de dados, mas também obtemos o resultado da nossa solicitação HTTP e esse é um objeto enorme, agora 53 00:03:48,560 --> 00:03:51,190 é realmente um objeto grande, como você pode ver. 54 00:03:51,760 --> 00:03:58,390 Agora, no final, o que está lá, neste objeto grande, este é o objeto aqui, temos uma chave de resultados lá, que é uma 55 00:03:58,390 --> 00:04:02,310 matriz e, lá, temos os diferentes componentes desse endereço, mas se você rolar um 56 00:04:02,320 --> 00:04:09,220 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 57 00:04:09,280 --> 00:04:13,930 apenas essa matriz, mas também temos endereço formatado e é isso que estou 58 00:04:13,930 --> 00:04:14,690 procurando, 59 00:04:14,710 --> 00:04:21,360 é isso que eu quero, quero esse endereço formatado, para que possamos extrair isso de nossa resposta dados aqui. 60 00:04:21,360 --> 00:04:26,510 Então, em vez de registrá-lo aqui, apenas verifico se talvez não tenhamos uma chave de 61 00:04:26,520 --> 00:04:34,300 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 62 00:04:34,300 --> 00:04:35,960 devo capaz de recuperá-lo. 63 00:04:35,980 --> 00:04:43,210 Então, aqui eu posso derivar meu endereço acessando os resultados dos dados de resposta e, aí, o primeiro item de linha, é aí 64 00:04:43,280 --> 00:04:43,790 que 65 00:04:43,810 --> 00:04:49,540 realmente encontramos o endereço formatado e você pode simplesmente inspecionar esse objeto. Apenas mostrei a você para 66 00:04:49,540 --> 00:04:52,090 ter uma idéia de sua estrutura completa . 67 00:04:52,090 --> 00:04:58,570 É 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 68 00:04:58,570 --> 00:05:03,550 e, portanto, posso recuperá-lo assim e agora temos tudo o que precisamos. 69 00:05:04,420 --> 00:05:09,280 Quando agora armazenamos algo no banco de dados, posso usar meu endereço que acabei de extrair, em vez do 70 00:05:09,280 --> 00:05:15,210 endereço fictício e, aqui, para a latitude, posso usar o local. lat, pela longitude, 71 00:05:15,430 --> 00:05:23,100 sem surpresa, posso usar a localização. Para enviar dados, também podemos adicionar informações adicionais. 72 00:05:23,520 --> 00:05:32,100 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 73 00:05:32,100 --> 00:05:40,320 é a localização. Agora, todos esses dados são repassados ao nosso objeto de ação 74 00:05:40,320 --> 00:05:42,380 e, portanto, atingem nosso redutor. 75 00:05:42,480 --> 00:05:47,940 Portanto, no redutor, agora precisamos garantir o uso dos novos campos de endereço e de cabos que obtemos. Portanto, no redutor de locais, 76 00:05:47,940 --> 00:05:53,750 queremos inicializar nosso local aqui com esses dados extras e, para isso, precisamos 77 00:05:53,770 --> 00:05:58,150 primeiro ajustar o modelo de local para esperar esses dados. 78 00:05:58,150 --> 00:06:04,990 Então, aqui, quero obter um endereço e quero latitude e longitude. Para que possamos armazenar tudo 79 00:06:04,990 --> 00:06:08,740 isso, armazenar o endereço aqui, armazenar a 80 00:06:08,880 --> 00:06:17,460 latitude e longitude, com o modelo preparado e com o modelo preparado, para recuperar esses dados 81 00:06:17,460 --> 00:06:22,500 extras no redutor, devemos adicioná-lo quando quisermos. adicione um lugar. 82 00:06:22,500 --> 00:06:30,420 Então aqui adicionamos como endereço a ação. placeData. endereço, porque foi o que acabei de 83 00:06:30,420 --> 00:06:35,310 adicionar nas ações locais, essa chave de endereço e também podemos obter as coordenadas. 84 00:06:35,310 --> 00:06:40,860 Então, para a latitude aqui, eu passo a ação. placeData. coords. lat e 85 00:06:40,860 --> 00:06:50,620 pela longitude, passo em frente. placeData. coords. lng. Com isso, os locais são 86 00:06:50,620 --> 00:06:51,510 inicializados aqui. 87 00:06:51,520 --> 00:06:57,550 Agora, quando os carregamos do banco de dados, quando configuramos nossos locais, devemos, portanto, também inicializar 88 00:06:57,550 --> 00:07:01,650 nosso modelo de local corretamente e pegar os dados que 89 00:07:02,020 --> 00:07:07,210 já estão no banco de dados, portanto, mantenha o endereço, mantenha a latitude 90 00:07:07,240 --> 00:07:13,940 e a longitude, então é isso bem simples e, portanto, agora, esperamos ter todos os dados e usá-los. 91 00:07:14,330 --> 00:07:16,340 Agora, para ver se isso funciona, precisamos 92 00:07:16,340 --> 00:07:21,760 trabalhar no item do local que estamos produzindo aqui na página inicial, podemos vê-lo no Android, para que também 93 00:07:21,950 --> 00:07:23,800 mostremos o endereço aqui, talvez, 94 00:07:24,080 --> 00:07:29,540 e também precisamos trabalhar no local tela de detalhes. Então, vamos trabalhar nisso para que possamos ver todas 95 00:07:29,540 --> 00:07:30,680 as peças juntas.