Así que quiero ir a la pantalla del mapa y en realidad quiero agregar un marcador allí desde el principio, que también es algo que
no admite en este momento
y quiero asegurarme de que no puedo elegir una nueva
ubicación allí, entonces un par de restricciones.
Entonces, cuando hacemos clic en la vista previa del mapa, en Press, quiero navegar a la pantalla diferente a la derecha.
Así que agregaré una nueva constante aquí para mantener una función que nombraré mostrar el controlador del mapa, por supuesto, también podría haber utilizado
una función en línea y conectaré el controlador del mapa del espectáculo a mi accesorio de prensa aquí
en la vista previa del mapa .
Esto se activará cuando hagamos clic en la vista previa, cuando la toquemos
y aquí, por supuesto, quiero navegar. Por supuesto que se puede hacer con accesorios. navegación. navegar y luego ir a
la pantalla del mapa.
El problema es que si lo hacemos
así, como era de esperar, si miramos esto en Android una vez que se vuelve a cargar, si hago clic en esto, cargo
la pantalla del mapa pero no tengo el lugar que seleccioné preseleccionado y puedo también haga clic aquí y guarde y vuelva
a la pantalla de agregar lugar y definitivamente no es así como debería funcionar,
así que está mal.
En cambio, quiero pasar algunos datos a la pantalla del mapa, donde puedo configurarlo para que solo se
lea, digamos, así que pasaré un accesorio de solo
lectura y estableceré esto en verdadero y también quiero establecer una ubicación inicial y establecer esto a un objeto, por ejemplo, donde básicamente paso en esta
ubicación también lo muestro en la vista previa.
Así que aquí, puedo cortarlo desde allí y crear una nueva constante auxiliar aquí, la ubicación seleccionada ahora es solo esto aquí y paso esto como una
ubicación inicial aquí, la ubicación seleccionada y la paso a mi vista previa del mapa en el accesorio
de ubicación y con eso, estamos pasando los
datos a la pantalla del mapa, ahora tenemos que
usarlos allí.
Por lo tanto, necesitamos usar el accesorio o parámetro de solo lectura para asegurarnos de que no podemos seleccionar un nuevo lugar, una ubicación
inicial para tener un marcador allí desde el principio.
Entonces, para usar toda esa información aquí en la pantalla del mapa, puedo obtener mis datos de los parámetros que recibo, así
que obtengo mi ubicación inicial accediendo a los accesorios. navegación. ubicación inicial de getParam que se puede configurar,
por supuesto, esto también puede estar indefinido, pero también se puede configurar y obtengo la lectura solo con la
navegación de utilería get param read solo que también puede estar indefinido.
Ahora la ubicación inicial se
puede utilizar para inicializar el estado ahora. Ahora, esto no reiniciará esto cada vez que se vuelva a renderizar, sino
que React lo gestiona de tal manera que establezca el estado inicial y para los ciclos de renderizado posteriores, esto simplemente se ignora.
Entonces, ahora que tenemos una ubicación inicial, nuestro estado se inicializará en esa ubicación, lo cual es excelente.
Ahora tenga en cuenta que lo que pasé a la ubicación inicial es de tipo objeto con lat y lng
y que, por supuesto, debe coincidir con lo que administramos con nuestro estado aquí
y ese es el caso porque allí también configuré mi estado en un objeto con lat y lng, si
eso fuera diferente, necesitarías algo de lógica para normalizar esto. Ahora, solo lectura es lo otro que estoy extrayendo y puedo usar
esto en un controlador de ubicación selecto, que es la función que se activa cada vez que presionamos el mapa y
allí, podemos verificar si leer solo es verdadero y si no está definido, lo hará ser falso, pero si es cierto, acabo de regresar aquí,
lo que significa que no continúo, no elijo una nueva ubicación. Con eso, elegir una ubicación debería estar deshabilitado.
Ahora también quiero deshacerme del botón Guardar si no tenemos nada que guardar, así que si
estamos en modo de solo lectura, entonces no podemos guardar nada. Por lo tanto, headerRight solo debe establecerse si no estamos
en modo de solo lectura, por lo que aquí también extraeré el modo de solo lectura con la
ayuda de la navegación, obtengo param read solo, lo que puedo hacer
aquí, por supuesto, y por lo tanto ahora aquí, si estamos en modo de solo lectura, si eso es cierto, entonces la configuración que
devuelvo es un objeto
vacío, así que sin ningún botón. Intentemos esto.
Vamos a guardarlo y volver, y si ahora hago clic en este elemento aquí y hago clic en el mapa, se abre pero no tengo un botón para
guardar y tampoco un marcador, así que no funciona, pero al menos no puedo seleccionar un nuevo uno, eso es
bueno pero el marcador tampoco funciona. Ahora, antes de arreglar esto,
vayamos a la pantalla del nuevo lugar y veamos si todavía podemos establecer un marcador y ese es
el caso, podemos elegir un lugar allí, para que funcione.
Entonces, lo único que realmente no funciona es cargar este mapa con un marcador elegido y, de hecho, eso no es correcto, tenemos
un marcador,
simplemente no está aquí en la pantalla que preseleccionamos en San Francisco. Si vamos al plex de
Google allí abajo, aquí está el
marcador. Así que guardó esto, simplemente no se
centró en eso cuando lo cargamos, por lo que es un pequeño
ajuste que también deberíamos agregar en la pantalla del mapa. Allí, debemos asegurarnos de
que esta región del mapa que establezcamos aquí también tenga en cuenta la ubicación inicial
si tenemos una. Entonces, aquí la latitud que establecemos inicialmente,
bueno, si tenemos una ubicación inicial, entonces quiero usar la ubicación inicial. lat en lugar del predeterminado, solo use el
predeterminado de lo contrario, lo mismo, por supuesto, para la longitud.
Si tenemos una ubicación inicial, quiero usar la longitud de esa inicialmente en lugar de la predeterminada.
Ahora con eso, si guardamos esto, deberíamos poder tener un mapa que se centre automáticamente en nuestro marcador si lo abrimos
en el modo de solo lectura, así que aquí, de hecho, eso
funciona y si, por
supuesto, agrego un nuevo lugar, eso También sigue funcionando. Allí lo abrimos en el lugar predeterminado,
así que en algún lugar aquí en San Francisco. Por lo tanto, todo esto funciona y ahora solo
quiero probarlo en algunos dispositivos reales antes de concluir este módulo y hemos
terminado de agregar características nativas del dispositivo a nuestra aplicación React Native.