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
que ele não suporta no
momento e quero ter certeza de que não posso escolher
um novo local lá, então algumas restrições.
Então, quando clicamos na visualização do mapa, no Press, quero navegar para a tela diferente à direita.
Então, adicionarei uma nova constante aqui para conter uma função que nomeei mostrar manipulador de mapa, é claro que você também poderia
ter usado uma função em linha e conectarei o manipulador de mapa ao meu suporte de imprensa
aqui na visualização do mapa .
Isso será acionado quando clicarmos na visualização, quando tocarmos nela e,
é claro, aqui quero navegar. Claro que isso pode ser feito com adereços. navegação. navegue e vá para a
tela do mapa.
O problema é que, se fizermos
isso dessa maneira, surpreendentemente, se dermos uma olhada no Android uma vez recarregado, se clicar nele, carrego a tela do
mapa, mas não tenho o lugar que selecionei pré-selecionado e posso também clique aqui, salve e volte à minha
tela de adicionar local, e definitivamente não é assim que isso deve
funcionar, então está errado.
Em vez disso, quero passar alguns dados para a tela do mapa, onde eu posso definir isso
como somente leitura, digamos, então eu vou passar um
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
passo neste local, também mostro na visualização.
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
passo como local inicial aqui, o local selecionado e o passo para a visualização do mapa no
local e com isso, estamos passando os
dados para a tela do mapa, agora precisamos
usá-los lá.
Portanto, precisamos usar o suporte ou parâmetro somente leitura para garantir que não possamos selecionar um novo local, um local inicial para
ainda ter um marcador lá desde o início.
Portanto, agora, para usar todas essas informações aqui na tela do mapa, posso obter meus dados dos parâmetros que
recebo, para obter minha localização inicial acessando adereços. navegação. Localização inicial de getParam que pode ser definida,
é claro que isso também pode ser indefinido, mas também pode ser definido, e eu recebo a leitura somente
com navegação de adereços get param read only, que também pode ser indefinida.
Agora, o local inicial pode
ser usado para inicializar o estado agora. Agora, isso não reinicializará isso sempre que isso for renderizado novamente, mas o React
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.
Portanto, agora, quando tivermos um local inicial, nosso estado será inicializado nesse local, o que é ótimo.
Agora, lembre-se de que o que passei para o local inicial é do tipo objeto com lat e lng e
que, é claro, deve corresponder ao que gerenciamos com o nosso estado aqui e
é esse o caso, porque lá também defini meu estado como um objeto com lat e lng, se isso
fosse diferente, você precisaria de alguma lógica para normalizar isso. Agora, somente leitura é a outra coisa que estou extraindo e posso
usar isso em um manipulador de local selecionado, que é a função que é acionada sempre que pressionamos o mapa
e lá podemos verificar se somente leitura é verdadeira e se é indefinida. ser falso, mas se for verdade, acabo de voltar aqui, o
que significa que não continuo, não escolho um novo local. Com isso, a escolha de um local deve ser desativada.
Agora, também quero me livrar do botão Salvar, se não tivermos nada para salvar; portanto,
se estivermos no modo somente leitura, não poderemos salvar nada. Portanto, headerRight só deve ser definido
se não estivermos no modo somente leitura, portanto, aqui também extrairei o
modo somente leitura com a ajuda da navegação.
estamos no modo somente leitura, se isso for verdade, a configuração que retorno é um
objeto vazio,
portanto, sem nenhum botão. Vamos tentar.
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
marcador para que não funcione, mas pelo menos não posso selecionar um novo primeiro, isso é bom, mas o
marcador também não está funcionando. Agora, antes de corrigirmos isso,
vamos para a nova tela de local e veremos se ainda podemos definir um marcador e, nesse
caso, podemos escolher um local lá, para que funcione.
Portanto, a única coisa que realmente não funciona é carregar este mapa com um marcador escolhido e, na verdade, isso não está correto,
temos
um marcador, não está aqui na tela que selecionamos em São Francisco. Se formos para o Google plex lá
em
baixo, aqui
está o marcador. Então ele salvou isso, mas
não se concentrou nisso quando o carregamos, então é um
pequeno ajuste que devemos adicionar na tela do mapa. Lá, devemos garantir que
essa região do mapa que definimos aqui também leve em consideração o local inicial,
se tivermos um. Então, aqui a latitude que definimos inicialmente,
bem, se tivermos um local inicial, quero usar o local inicial. lat em vez do padrão, use apenas
o padrão, caso contrário, é claro para a longitude.
Se tivermos um local inicial, quero usar a longitude inicial inicialmente, em vez do padrão.
Agora, com isso, se salvarmos isso, poderemos ter um mapa que é
automaticamente centralizado em nosso marcador se o
abrirmos no
modo somente leitura. também ainda funciona. Lá abrimos no local padrão,
então em algum lugar aqui em San Francisco. Isso, portanto, tudo funciona e agora eu só quero
testá-lo em alguns dispositivos reais antes de encerrar este módulo e terminamos
de adicionar recursos de dispositivos nativos ao nosso aplicativo React Native.