1 00:00:02,160 --> 00:00:09,210 Então, eu quero ir para a tela do mapa e, na verdade, quero adicionar um marcador lá desde o início, o que também é algo 2 00:00:09,210 --> 00:00:11,050 que ele não suporta no 3 00:00:11,100 --> 00:00:13,910 momento e quero ter certeza de que não posso escolher 4 00:00:13,990 --> 00:00:15,990 um novo local lá, então algumas restrições. 5 00:00:15,990 --> 00:00:21,960 Então, quando clicamos na visualização do mapa, no Press, quero navegar para a tela diferente à direita. 6 00:00:22,020 --> 00:00:28,330 Então, adicionarei uma nova constante aqui para conter uma função que nomeei mostrar manipulador de mapa, é claro que você também poderia 7 00:00:28,590 --> 00:00:33,300 ter usado uma função em linha e conectarei o manipulador de mapa ao meu suporte de imprensa 8 00:00:33,300 --> 00:00:35,340 aqui na visualização do mapa . 9 00:00:35,370 --> 00:00:38,970 Isso será acionado quando clicarmos na visualização, quando tocarmos nela e, 10 00:00:39,130 --> 00:00:47,430 é claro, aqui quero navegar. Claro que isso pode ser feito com adereços. navegação. navegue e vá para a 11 00:00:47,430 --> 00:00:49,200 tela do mapa. 12 00:00:49,200 --> 00:00:51,520 O problema é que, se fizermos 13 00:00:51,520 --> 00:00:58,830 isso dessa maneira, surpreendentemente, se dermos uma olhada no Android uma vez recarregado, se clicar nele, carrego a tela do 14 00:00:58,830 --> 00:01:05,790 mapa, mas não tenho o lugar que selecionei pré-selecionado e posso também clique aqui, salve e volte à minha 15 00:01:05,790 --> 00:01:10,120 tela de adicionar local, e definitivamente não é assim que isso deve 16 00:01:11,240 --> 00:01:12,860 funcionar, então está errado. 17 00:01:12,890 --> 00:01:19,640 Em vez disso, quero passar alguns dados para a tela do mapa, onde eu posso definir isso 18 00:01:19,880 --> 00:01:23,140 como somente leitura, digamos, então eu vou passar um 19 00:01:23,450 --> 00:01:32,870 suporte somente leitura e definir como true e também quero definir uma localização inicial e definir isso para um objeto, por exemplo, onde basicamente 20 00:01:32,870 --> 00:01:35,990 passo neste local, também mostro na visualização. 21 00:01:35,990 --> 00:01:46,870 Então, aqui, eu posso cortá-lo a partir daí e criar uma nova constante auxiliar aqui, o local selecionado agora é apenas este aqui e o 22 00:01:46,870 --> 00:01:54,310 passo como local inicial aqui, o local selecionado e o passo para a visualização do mapa no 23 00:01:54,310 --> 00:01:57,440 local e com isso, estamos passando os 24 00:01:57,510 --> 00:02:01,160 dados para a tela do mapa, agora precisamos 25 00:02:01,170 --> 00:02:02,430 usá-los lá. 26 00:02:02,430 --> 00:02:08,940 Portanto, precisamos usar o suporte ou parâmetro somente leitura para garantir que não possamos selecionar um novo local, um local inicial para 27 00:02:08,940 --> 00:02:11,670 ainda ter um marcador lá desde o início. 28 00:02:12,620 --> 00:02:19,990 Portanto, agora, para usar todas essas informações aqui na tela do mapa, posso obter meus dados dos parâmetros que 29 00:02:20,000 --> 00:02:30,380 recebo, para obter minha localização inicial acessando adereços. navegação. Localização inicial de getParam que pode ser definida, 30 00:02:30,380 --> 00:02:37,940 é claro que isso também pode ser indefinido, mas também pode ser definido, e eu recebo a leitura somente 31 00:02:37,970 --> 00:02:42,980 com navegação de adereços get param read only, que também pode ser indefinida. 32 00:02:43,150 --> 00:02:45,860 Agora, o local inicial pode 33 00:02:45,860 --> 00:02:51,680 ser usado para inicializar o estado agora. Agora, isso não reinicializará isso sempre que isso for renderizado novamente, mas o React 34 00:02:51,680 --> 00:02:56,450 gerencia isso de maneira que isso defina o estado inicial e, para os ciclos de renderização subsequentes, isso é simplesmente ignorado, como você poderia dizer. 35 00:02:57,650 --> 00:03:03,530 Portanto, agora, quando tivermos um local inicial, nosso estado será inicializado nesse local, o que é ótimo. 36 00:03:03,590 --> 00:03:09,290 Agora, lembre-se de que o que passei para o local inicial é do tipo objeto com lat e lng e 37 00:03:09,290 --> 00:03:13,510 que, é claro, deve corresponder ao que gerenciamos com o nosso estado aqui e 38 00:03:13,510 --> 00:03:18,950 é esse o caso, porque lá também defini meu estado como um objeto com lat e lng, se isso 39 00:03:18,950 --> 00:03:25,490 fosse diferente, você precisaria de alguma lógica para normalizar isso. Agora, somente leitura é a outra coisa que estou extraindo e posso 40 00:03:25,490 --> 00:03:31,220 usar isso em um manipulador de local selecionado, que é a função que é acionada sempre que pressionamos o mapa 41 00:03:31,340 --> 00:03:37,940 e lá podemos verificar se somente leitura é verdadeira e se é indefinida. ser falso, mas se for verdade, acabo de voltar aqui, o 42 00:03:37,940 --> 00:03:44,090 que significa que não continuo, não escolho um novo local. Com isso, a escolha de um local deve ser desativada. 43 00:03:44,090 --> 00:03:47,900 Agora, também quero me livrar do botão Salvar, se não tivermos nada para salvar; portanto, 44 00:03:47,900 --> 00:03:53,630 se estivermos no modo somente leitura, não poderemos salvar nada. Portanto, headerRight só deve ser definido 45 00:03:53,780 --> 00:03:58,790 se não estivermos no modo somente leitura, portanto, aqui também extrairei o 46 00:03:58,790 --> 00:04:02,200 modo somente leitura com a ajuda da navegação. 47 00:04:02,600 --> 00:04:09,230 estamos no modo somente leitura, se isso for verdade, a configuração que retorno é um 48 00:04:09,230 --> 00:04:10,550 objeto vazio, 49 00:04:10,550 --> 00:04:14,240 portanto, sem nenhum botão. Vamos tentar. 50 00:04:14,300 --> 00:04:22,550 Vamos salvá-lo e voltar e, se agora clicar neste item aqui e clicar no mapa, ele será aberto, mas não tenho o botão Salvar e também nenhum 51 00:04:22,550 --> 00:04:28,430 marcador para que não funcione, mas pelo menos não posso selecionar um novo primeiro, isso é bom, mas o 52 00:04:28,430 --> 00:04:32,030 marcador também não está funcionando. Agora, antes de corrigirmos isso, 53 00:04:32,030 --> 00:04:37,540 vamos para a nova tela de local e veremos se ainda podemos definir um marcador e, nesse 54 00:04:37,550 --> 00:04:40,700 caso, podemos escolher um local lá, para que funcione. 55 00:04:40,700 --> 00:04:48,640 Portanto, a única coisa que realmente não funciona é carregar este mapa com um marcador escolhido e, na verdade, isso não está correto, 56 00:04:48,640 --> 00:04:49,360 temos 57 00:04:49,360 --> 00:04:57,600 um marcador, não está aqui na tela que selecionamos em São Francisco. Se formos para o Google plex lá 58 00:04:57,600 --> 00:04:58,260 em 59 00:05:01,440 --> 00:05:02,750 baixo, aqui 60 00:05:02,760 --> 00:05:06,160 está o marcador. Então ele salvou isso, mas 61 00:05:06,180 --> 00:05:08,880 não se concentrou nisso quando o carregamos, então é um 62 00:05:09,300 --> 00:05:13,970 pequeno ajuste que devemos adicionar na tela do mapa. Lá, devemos garantir que 63 00:05:14,190 --> 00:05:22,240 essa região do mapa que definimos aqui também leve em consideração o local inicial, 64 00:05:22,240 --> 00:05:26,590 se tivermos um. Então, aqui a latitude que definimos inicialmente, 65 00:05:26,620 --> 00:05:32,770 bem, se tivermos um local inicial, quero usar o local inicial. lat em vez do padrão, use apenas 66 00:05:32,920 --> 00:05:36,550 o padrão, caso contrário, é claro para a longitude. 67 00:05:36,550 --> 00:05:42,010 Se tivermos um local inicial, quero usar a longitude inicial inicialmente, em vez do padrão. 68 00:05:44,060 --> 00:05:50,390 Agora, com isso, se salvarmos isso, poderemos ter um mapa que é 69 00:05:50,390 --> 00:05:54,050 automaticamente centralizado em nosso marcador se o 70 00:05:54,470 --> 00:05:55,960 abrirmos no 71 00:05:56,180 --> 00:06:01,840 modo somente leitura. também ainda funciona. Lá abrimos no local padrão, 72 00:06:01,850 --> 00:06:08,840 então em algum lugar aqui em San Francisco. Isso, portanto, tudo funciona e agora eu só quero 73 00:06:08,870 --> 00:06:13,190 testá-lo em alguns dispositivos reais antes de encerrar este módulo e terminamos 74 00:06:13,340 --> 00:06:17,240 de adicionar recursos de dispositivos nativos ao nosso aplicativo React Native.