Quindi voglio andare alla schermata della mappa e in realtà voglio aggiungere un marker lì fin dall'inizio che è anche qualcosa che non
supporta in questo momento e
voglio assicurarmi di non poter scegliere una nuova posizione
lì, quindi un paio di restrizioni.
Quindi, quando facciamo clic sull'anteprima della mappa, suPress, voglio passare alla schermata diversa a destra.
Quindi aggiungerò una nuova costante qui per contenere una funzione che chiamerò show map handler, ovviamente avresti potuto usare
anche una funzione inline e collegherò lo show map handler al mio oggetto di
stampa qui sull'anteprima della mappa .
Questo verrà attivato quando facciamo clic sull'anteprima, quando la tocchiamo
e qui ovviamente voglio navigare. Certo che può essere fatto con oggetti di scena. navigazione. navigare e quindi andare alla
schermata della mappa.
Il problema è che se lo
facciamo in questo modo, non sorprende se lo guardiamo su Android una volta ricaricato, se faccio clic su questo, carico
la schermata della mappa ma non ho il luogo selezionato preselezionato e posso clicca anche qui e salva e
torna alla schermata Aggiungi posto e non è assolutamente così che dovrebbe
funzionare, quindi è sbagliato.
Invece voglio passare alcuni dati alla schermata della mappa dove posso impostare una sola lettura per così
dire, quindi passerò un puntello di sola lettura
e lo imposterò su vero e voglio anche impostare una posizione iniziale e impostare questo ad un oggetto per esempio, dove praticamente passo
in questa posizione, mostro anche in anteprima.
Quindi questo qui, posso tagliarlo da lì e creare una nuova costante di aiuto qui, la posizione selezionata ora è solo questa qui e la
passo come posizione iniziale qui, la posizione selezionata e la passo all'anteprima della mia mappa sul puntello
di posizione e con ciò, stiamo passando
i dati alla schermata della mappa, ora dobbiamo
usarli lì.
Quindi dobbiamo usare l'elica o il parametro di sola lettura per assicurarci di non poter selezionare un nuovo posto, una posizione iniziale
per avere ancora un marker lì dentro dall'inizio.
Quindi ora per usare tutte quelle informazioni qui nella schermata della mappa, posso ottenere i miei dati dai parametri che ricevo,
quindi ottengo la mia posizione iniziale accedendo ai puntelli. navigazione. La posizione iniziale di getParam che potrebbe essere impostata,
ovviamente anche questa potrebbe non essere definita, ma potrebbe anche essere impostata e ottengo la lettura solo con la navigazione degli
oggetti di scena ottengo solo la lettura dei parametri che potrebbe anche essere indefinita.
Ora la posizione iniziale può
essere utilizzata per inizializzare lo stato adesso. Ora, questo non reinizializzerà questo ogni volta che questo viene reso nuovamente, ma invece React
lo gestisce in modo tale da impostare lo stato iniziale e per i successivi cicli di nuovo rendering, questo è semplicemente ignorato, si potrebbe dire.
Quindi ora quando abbiamo una posizione iniziale, il nostro stato verrà inizializzato in quella posizione, il che è fantastico.
Ora tieni presente che ciò che ho passato alla posizione iniziale è di tipo object con lat e lng e
che ovviamente dovrebbe corrispondere a ciò che gestiamo con il nostro stato qui e questo
è il caso perché lì ho anche impostato il mio stato su un oggetto con lat e lng, se
ciò fosse diverso, avresti bisogno di una logica per normalizzare questo. Ora sola lettura è l'altra cosa che sto estraendo e posso usarla
in un gestore di posizione selezionato che è la funzione che si attiva ogni volta che premiamo la mappa e lì,
possiamo verificare se la sola lettura è vera e se non è definita, lo farà sii falso ma se è vero, torno qui, il
che significa che non continuo, non scelgo una nuova posizione. Detto questo, la selezione di una posizione dovrebbe essere disabilitata.
Ora voglio anche sbarazzarmi del pulsante Salva se non abbiamo nulla da salvare, quindi se
siamo in modalità di sola lettura, non possiamo salvare nulla. Quindi headerRight dovrebbe essere impostato solo se non siamo
in modalità di sola lettura, quindi qui estrarrò anche la modalità di sola lettura con l'aiuto
della navigazione ottenere param read solo cosa che posso fare anche
qui ovviamente e quindi ora qui, se siamo in modalità di sola lettura, se questo è vero, la configurazione che ritorno
è un oggetto
vuoto, quindi senza alcun pulsante. Facciamo una prova.
Salviamolo e torniamo indietro e se ora faccio clic su questo elemento qui e faccio clic sulla mappa, si apre ma non ho alcun pulsante di salvataggio
e anche nessun indicatore in modo che non funzioni ma almeno non posso selezionare un nuovo uno, va bene ma
anche il marker non funziona. Ora prima di risolvere questo
problema, andiamo alla schermata del nuovo posto e vediamo se possiamo ancora impostare un indicatore e, in tal
caso, possiamo scegliere un posto lì, in modo che funzioni.
Quindi l'unica cosa che non funziona davvero è caricare questa mappa con un indicatore scelto e in realtà, non è corretto, abbiamo un
indicatore,
non è proprio qui sullo schermo che abbiamo preselezionato a San Francisco. Se andiamo al plex
di Google laggiù, ecco il
marker. Quindi ha salvato questo, ma non si
è concentrato su quello quando lo abbiamo caricato, quindi è un po
'di modifica che dovremmo aggiungere anche sulla schermata della mappa. Lì, dovremmo assicurarci che
questa regione della mappa che impostiamo qui tenga conto anche della posizione iniziale se
ne abbiamo una. Quindi qui la latitudine che abbiamo impostato inizialmente,
bene se abbiamo una posizione iniziale, allora voglio usare la posizione iniziale. lat invece del default, usa solo
il default altrimenti, lo stesso ovviamente per la longitudine.
Se abbiamo una posizione iniziale, voglio usare inizialmente la longitudine invece di quella predefinita.
Ora con ciò se salviamo questo, dovremmo essere in grado di avere una mappa che è automaticamente centrata sul nostro
indicatore se lo apriamo in modalità di sola lettura, quindi qui,
effettivamente funziona e se
ovviamente aggiungo un nuovo posto, quello funziona ancora. Lì lo apriamo sul posto predefinito,
quindi da qualche parte qui a San Francisco. Questo quindi funziona tutto e ora voglio solo testarlo
su alcuni dispositivi reali prima di concludere questo modulo e abbiamo finito con
l'aggiunta di funzionalità di dispositivi nativi alla nostra app React Native.