Ich möchte also zum Kartenbildschirm gehen und dort von Anfang an eine Markierung hinzufügen, die derzeit ebenfalls nicht unterstützt
wird, und ich möchte
sicherstellen, dass ich dort keinen neuen Ort auswählen
kann. also ein paar einschränkungen.
Wenn wir also auf die Kartenvorschau klicken, onPress, möchte ich zu dem anderen Bildschirm rechts navigieren.
Also werde ich hier eine neue Konstante hinzufügen, um eine Funktion zu speichern, die ich Show Map Handler nennen werde. Natürlich hätten
Sie auch eine Inline-Funktion verwenden können, und ich werde den Show Map Handler hier in der
Kartenvorschau mit meiner On-Press-Requisite verbinden .
Dies wird ausgelöst, wenn wir auf die Vorschau klicken, wenn wir darauf
tippen und hier natürlich navigieren möchte. Das kann man natürlich mit Requisiten machen. Navigation. Navigieren Sie und gehen Sie
dann zum Kartenbildschirm.
Das Problem ist nur, wenn wir es so
machen, nicht überraschend, wenn wir uns dies auf Android ansehen, sobald es neu geladen wurde. Wenn ich darauf klicke, lade ich den Kartenbildschirm, aber
ich habe nicht den Ort, den ich ausgewählt habe, und ich kann Klicken Sie auch hier und speichern Sie und kehren Sie
zu meinem Bildschirm zum Hinzufügen von Orten zurück. So sollte das definitiv nicht funktionieren,
also ist das falsch.
Stattdessen möchte ich einige Daten an den Kartenbildschirm übergeben, wo ich für einen Satz dies als schreibgeschützt
festlegen kann. Nehmen wir also eine schreibgeschützte Requisite und
setze dies auf true. Außerdem möchte ich einen anfänglichen Speicherort festlegen und diesen festlegen zu einem Objekt zum Beispiel, wo ich grundsätzlich an dieser Stelle
vorbeigehe, zeige ich auch in der Vorschau.
Damit dies hier möglich ist, kann ich es von dort aus ausschneiden und hier eine neue Hilfskonstante erstellen. Der ausgewählte Ort ist jetzt genau hier
und ich übergebe dies als anfänglichen Ort hier, den ausgewählten Ort und übergebe ihn an meine Kartenvorschau
auf der Standort-Requisite und damit übergeben wir
die Daten an den Kartenbildschirm, wir müssen sie jetzt
dort verwenden.
Wir müssen also die schreibgeschützte Requisite oder den schreibgeschützten Parameter verwenden, um sicherzustellen, dass wir keinen neuen Ort auswählen können, einen anfänglichen Ort, an
dem von Anfang an noch eine Markierung vorhanden ist.
Um nun all diese Informationen hier auf dem Kartenbildschirm zu verwenden, kann ich meine Daten von den Parametern abrufen, die ich erhalte,
sodass ich meinen ursprünglichen Standort durch Zugriff auf Requisiten erhalte. Navigation. Der anfängliche Speicherort von getParam, der festgelegt
werden kann, kann natürlich auch undefiniert sein, aber er kann auch festgelegt werden, und ich erhalte die schreibgeschützte
Navigation mit Requisiten. get param read only, die ebenfalls undefiniert sein kann.
Jetzt kann der ursprüngliche Speicherort verwendet
werden, um den Status jetzt zu initialisieren. Dies wird dies nicht neu initialisieren, wenn dies erneut gerendert wird, sondern
React verwaltet dies so, dass dies den Anfangszustand festlegt, und für nachfolgende Re-Render-Zyklen wird dies einfach ignoriert, könnte man sagen.
Wenn wir also einen anfänglichen Standort haben, wird unser Status auf diesen großartigen Standort initialisiert.
Denken Sie jetzt daran, dass das, was ich an den ursprünglichen Speicherort übergeben habe, vom Typ Objekt mit lat und lng ist
und dass dies natürlich mit dem übereinstimmen sollte, was wir mit unserem Status hier verwalten, und
das ist der Fall, weil ich dort meinen Status auch auf ein Objekt mit lat gesetzt habe und lng, wenn das
anders wäre, würden Sie eine Logik brauchen, um dies zu normalisieren. Jetzt ist schreibgeschützt das andere, was ich extrahiere, und ich kann
dies in einem ausgewählten Standort-Handler verwenden. Diese Funktion wird ausgelöst, wenn wir auf die Karte drücken. Dort können wir
überprüfen, ob schreibgeschützt wahr ist und ob es undefiniert ist Sei falsch, aber wenn es wahr ist, kehre ich einfach hierher zurück, was
bedeutet, dass ich nicht weitermache und keinen neuen Ort auswähle. Damit sollte die Auswahl eines Ortes deaktiviert werden.
Jetzt möchte ich auch die Schaltfläche Speichern entfernen, wenn wir nichts zu speichern haben. Wenn
wir uns also im schreibgeschützten Modus befinden, können wir nichts speichern. HeaderRight sollte also nur gesetzt werden,
wenn wir uns nicht im schreibgeschützten Modus befinden. Daher werde ich
hier auch den schreibgeschützten Modus mithilfe der Navigation
extrahieren Wir sind im schreibgeschützten Modus. Wenn dies zutrifft, ist die von mir zurückgegebene Konfiguration
ein leeres
Objekt, also ohne Schaltfläche. Probieren wir es aus.
Speichern wir es und gehen wir zurück. Wenn ich jetzt hier auf dieses Element klicke und auf die Karte klicke, wird es geöffnet, aber ich habe keine Schaltfläche zum
Speichern und auch keine Markierung, sodass dies nicht funktioniert, aber ich kann zumindest kein neues auswählen Erstens ist das gut,
aber der Marker funktioniert auch nicht. Bevor wir dies beheben, gehen
wir zum neuen Ortsbildschirm und sehen, ob wir dort noch einen Marker setzen können. In diesem Fall
können wir dort einen Ort auswählen, damit dies funktioniert.
Das einzige, was nicht wirklich funktioniert, ist das Laden dieser Karte mit einem ausgewählten Marker. Das stimmt nicht. Wir haben einen Marker. Er befindet
sich einfach
nicht hier auf dem Bildschirm, den wir in San Francisco ausgewählt haben. Wenn wir dort unten
zum Google-Plex gehen, ist hier der
Marker. Das hat es also gespeichert, es
hat sich beim Laden einfach nicht darauf konzentriert, also ist das eine
kleine Änderung, die wir auch auf dem Kartenbildschirm hinzufügen sollten. Dort sollten wir sicherstellen,
dass diese hier festgelegte Kartenregion auch den ursprünglichen Standort berücksichtigt, falls wir
einen haben. Hier ist also der Breitengrad, den wir ursprünglich festgelegt
haben. Wenn wir also einen anfänglichen Standort haben, möchte ich den anfänglichen Standort verwenden. lat anstelle der Standardeinstellung nur
die Standardeinstellung verwenden, ansonsten natürlich für die Länge.
Wenn wir einen anfänglichen Standort haben, möchte ich zunächst den Längengrad anstelle des Standardlängens verwenden.
Wenn wir dies speichern, sollten wir in der Lage sein, eine Karte zu haben, die automatisch auf unserer Markierung zentriert
ist, wenn wir sie im schreibgeschützten Modus öffnen. Hier funktioniert das also
tatsächlich, und wenn ich
natürlich einen neuen Ort hinzufüge, das funktioniert auch noch. Dort öffnen wir es am
Standardplatz, also irgendwo hier in San Francisco. Dies funktioniert also alles und jetzt möchte ich
es nur auf einigen realen Geräten testen, bevor ich dieses Modul abschließe,
und wir sind damit fertig, unserer React Native-App native Gerätefunktionen hinzuzufügen.