1 00:00:02,160 --> 00:00:09,210 Ich möchte also zum Kartenbildschirm gehen und dort von Anfang an eine Markierung hinzufügen, die derzeit ebenfalls nicht unterstützt 2 00:00:09,210 --> 00:00:11,050 wird, und ich möchte 3 00:00:11,100 --> 00:00:13,910 sicherstellen, dass ich dort keinen neuen Ort auswählen 4 00:00:13,990 --> 00:00:15,990 kann. also ein paar einschränkungen. 5 00:00:15,990 --> 00:00:21,960 Wenn wir also auf die Kartenvorschau klicken, onPress, möchte ich zu dem anderen Bildschirm rechts navigieren. 6 00:00:22,020 --> 00:00:28,330 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 7 00:00:28,590 --> 00:00:33,300 Sie auch eine Inline-Funktion verwenden können, und ich werde den Show Map Handler hier in der 8 00:00:33,300 --> 00:00:35,340 Kartenvorschau mit meiner On-Press-Requisite verbinden . 9 00:00:35,370 --> 00:00:38,970 Dies wird ausgelöst, wenn wir auf die Vorschau klicken, wenn wir darauf 10 00:00:39,130 --> 00:00:47,430 tippen und hier natürlich navigieren möchte. Das kann man natürlich mit Requisiten machen. Navigation. Navigieren Sie und gehen Sie 11 00:00:47,430 --> 00:00:49,200 dann zum Kartenbildschirm. 12 00:00:49,200 --> 00:00:51,520 Das Problem ist nur, wenn wir es so 13 00:00:51,520 --> 00:00:58,830 machen, nicht überraschend, wenn wir uns dies auf Android ansehen, sobald es neu geladen wurde. Wenn ich darauf klicke, lade ich den Kartenbildschirm, aber 14 00:00:58,830 --> 00:01:05,790 ich habe nicht den Ort, den ich ausgewählt habe, und ich kann Klicken Sie auch hier und speichern Sie und kehren Sie 15 00:01:05,790 --> 00:01:10,120 zu meinem Bildschirm zum Hinzufügen von Orten zurück. So sollte das definitiv nicht funktionieren, 16 00:01:11,240 --> 00:01:12,860 also ist das falsch. 17 00:01:12,890 --> 00:01:19,640 Stattdessen möchte ich einige Daten an den Kartenbildschirm übergeben, wo ich für einen Satz dies als schreibgeschützt 18 00:01:19,880 --> 00:01:23,140 festlegen kann. Nehmen wir also eine schreibgeschützte Requisite und 19 00:01:23,450 --> 00:01:32,870 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 20 00:01:32,870 --> 00:01:35,990 vorbeigehe, zeige ich auch in der Vorschau. 21 00:01:35,990 --> 00:01:46,870 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 22 00:01:46,870 --> 00:01:54,310 und ich übergebe dies als anfänglichen Ort hier, den ausgewählten Ort und übergebe ihn an meine Kartenvorschau 23 00:01:54,310 --> 00:01:57,440 auf der Standort-Requisite und damit übergeben wir 24 00:01:57,510 --> 00:02:01,160 die Daten an den Kartenbildschirm, wir müssen sie jetzt 25 00:02:01,170 --> 00:02:02,430 dort verwenden. 26 00:02:02,430 --> 00:02:08,940 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 27 00:02:08,940 --> 00:02:11,670 dem von Anfang an noch eine Markierung vorhanden ist. 28 00:02:12,620 --> 00:02:19,990 Um nun all diese Informationen hier auf dem Kartenbildschirm zu verwenden, kann ich meine Daten von den Parametern abrufen, die ich erhalte, 29 00:02:20,000 --> 00:02:30,380 sodass ich meinen ursprünglichen Standort durch Zugriff auf Requisiten erhalte. Navigation. Der anfängliche Speicherort von getParam, der festgelegt 30 00:02:30,380 --> 00:02:37,940 werden kann, kann natürlich auch undefiniert sein, aber er kann auch festgelegt werden, und ich erhalte die schreibgeschützte 31 00:02:37,970 --> 00:02:42,980 Navigation mit Requisiten. get param read only, die ebenfalls undefiniert sein kann. 32 00:02:43,150 --> 00:02:45,860 Jetzt kann der ursprüngliche Speicherort verwendet 33 00:02:45,860 --> 00:02:51,680 werden, um den Status jetzt zu initialisieren. Dies wird dies nicht neu initialisieren, wenn dies erneut gerendert wird, sondern 34 00:02:51,680 --> 00:02:56,450 React verwaltet dies so, dass dies den Anfangszustand festlegt, und für nachfolgende Re-Render-Zyklen wird dies einfach ignoriert, könnte man sagen. 35 00:02:57,650 --> 00:03:03,530 Wenn wir also einen anfänglichen Standort haben, wird unser Status auf diesen großartigen Standort initialisiert. 36 00:03:03,590 --> 00:03:09,290 Denken Sie jetzt daran, dass das, was ich an den ursprünglichen Speicherort übergeben habe, vom Typ Objekt mit lat und lng ist 37 00:03:09,290 --> 00:03:13,510 und dass dies natürlich mit dem übereinstimmen sollte, was wir mit unserem Status hier verwalten, und 38 00:03:13,510 --> 00:03:18,950 das ist der Fall, weil ich dort meinen Status auch auf ein Objekt mit lat gesetzt habe und lng, wenn das 39 00:03:18,950 --> 00:03:25,490 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 40 00:03:25,490 --> 00:03:31,220 dies in einem ausgewählten Standort-Handler verwenden. Diese Funktion wird ausgelöst, wenn wir auf die Karte drücken. Dort können wir 41 00:03:31,340 --> 00:03:37,940 ü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 42 00:03:37,940 --> 00:03:44,090 bedeutet, dass ich nicht weitermache und keinen neuen Ort auswähle. Damit sollte die Auswahl eines Ortes deaktiviert werden. 43 00:03:44,090 --> 00:03:47,900 Jetzt möchte ich auch die Schaltfläche Speichern entfernen, wenn wir nichts zu speichern haben. Wenn 44 00:03:47,900 --> 00:03:53,630 wir uns also im schreibgeschützten Modus befinden, können wir nichts speichern. HeaderRight sollte also nur gesetzt werden, 45 00:03:53,780 --> 00:03:58,790 wenn wir uns nicht im schreibgeschützten Modus befinden. Daher werde ich 46 00:03:58,790 --> 00:04:02,200 hier auch den schreibgeschützten Modus mithilfe der Navigation 47 00:04:02,600 --> 00:04:09,230 extrahieren Wir sind im schreibgeschützten Modus. Wenn dies zutrifft, ist die von mir zurückgegebene Konfiguration 48 00:04:09,230 --> 00:04:10,550 ein leeres 49 00:04:10,550 --> 00:04:14,240 Objekt, also ohne Schaltfläche. Probieren wir es aus. 50 00:04:14,300 --> 00:04:22,550 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 51 00:04:22,550 --> 00:04:28,430 Speichern und auch keine Markierung, sodass dies nicht funktioniert, aber ich kann zumindest kein neues auswählen Erstens ist das gut, 52 00:04:28,430 --> 00:04:32,030 aber der Marker funktioniert auch nicht. Bevor wir dies beheben, gehen 53 00:04:32,030 --> 00:04:37,540 wir zum neuen Ortsbildschirm und sehen, ob wir dort noch einen Marker setzen können. In diesem Fall 54 00:04:37,550 --> 00:04:40,700 können wir dort einen Ort auswählen, damit dies funktioniert. 55 00:04:40,700 --> 00:04:48,640 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 56 00:04:48,640 --> 00:04:49,360 sich einfach 57 00:04:49,360 --> 00:04:57,600 nicht hier auf dem Bildschirm, den wir in San Francisco ausgewählt haben. Wenn wir dort unten 58 00:04:57,600 --> 00:05:02,750 zum Google-Plex gehen, ist hier der 59 00:05:02,760 --> 00:05:06,160 Marker. Das hat es also gespeichert, es 60 00:05:06,180 --> 00:05:08,880 hat sich beim Laden einfach nicht darauf konzentriert, also ist das eine 61 00:05:09,300 --> 00:05:13,970 kleine Änderung, die wir auch auf dem Kartenbildschirm hinzufügen sollten. Dort sollten wir sicherstellen, 62 00:05:14,190 --> 00:05:22,240 dass diese hier festgelegte Kartenregion auch den ursprünglichen Standort berücksichtigt, falls wir 63 00:05:22,240 --> 00:05:26,590 einen haben. Hier ist also der Breitengrad, den wir ursprünglich festgelegt 64 00:05:26,620 --> 00:05:32,770 haben. Wenn wir also einen anfänglichen Standort haben, möchte ich den anfänglichen Standort verwenden. lat anstelle der Standardeinstellung nur 65 00:05:32,920 --> 00:05:36,550 die Standardeinstellung verwenden, ansonsten natürlich für die Länge. 66 00:05:36,550 --> 00:05:42,010 Wenn wir einen anfänglichen Standort haben, möchte ich zunächst den Längengrad anstelle des Standardlängens verwenden. 67 00:05:44,060 --> 00:05:50,390 Wenn wir dies speichern, sollten wir in der Lage sein, eine Karte zu haben, die automatisch auf unserer Markierung zentriert 68 00:05:50,390 --> 00:05:54,050 ist, wenn wir sie im schreibgeschützten Modus öffnen. Hier funktioniert das also 69 00:05:54,470 --> 00:05:55,960 tatsächlich, und wenn ich 70 00:05:56,180 --> 00:06:01,840 natürlich einen neuen Ort hinzufüge, das funktioniert auch noch. Dort öffnen wir es am 71 00:06:01,850 --> 00:06:08,840 Standardplatz, also irgendwo hier in San Francisco. Dies funktioniert also alles und jetzt möchte ich 72 00:06:08,870 --> 00:06:13,190 es nur auf einigen realen Geräten testen, bevor ich dieses Modul abschließe, 73 00:06:13,340 --> 00:06:17,240 und wir sind damit fertig, unserer React Native-App native Gerätefunktionen hinzuzufügen.