1 00:00:02,160 --> 00:00:09,210 Więc chcę przejść do ekranu mapy i tak naprawdę od samego początku chcę tam dodać znacznik, który również nie jest 2 00:00:09,210 --> 00:00:11,050 w tej chwili obsługiwany 3 00:00:11,100 --> 00:00:13,910 i chcę się upewnić, że nie mogę wybrać 4 00:00:13,990 --> 00:00:15,990 nowej lokalizacji, więc kilka ograniczeń. 5 00:00:15,990 --> 00:00:21,960 Kiedy klikamy podgląd mapy, onPress chcę przejść do innego ekranu po prawej stronie. 6 00:00:22,020 --> 00:00:28,330 Dodam tutaj nową stałą, która będzie zawierać funkcję, którą nazwiebym show handler map, oczywiście, że mógłbyś również 7 00:00:28,590 --> 00:00:33,300 użyć funkcji inline, i połączę show handler map z moją propozycją prasową 8 00:00:33,300 --> 00:00:35,340 tutaj na podglądzie mapy . 9 00:00:35,370 --> 00:00:38,970 Zostanie to uruchomione, gdy klikniemy podgląd, kiedy go klikniemy 10 00:00:39,130 --> 00:00:47,430 i tutaj oczywiście chcę nawigować. Oczywiście można to zrobić za pomocą rekwizytów. nawigacja. nawiguj, a następnie przejdź 11 00:00:47,430 --> 00:00:49,200 do ekranu mapy. 12 00:00:49,200 --> 00:00:51,520 Problem polega tylko na tym, że 13 00:00:51,520 --> 00:00:58,830 robimy to w ten sposób, co nie jest zaskakujące, jeśli spojrzymy na to na Androidzie po ponownym załadowaniu, jeśli kliknę 14 00:00:58,830 --> 00:01:05,790 na to, wczytam ekran mapy, ale nie mam wcześniej wybranego miejsca i mogę również kliknij tutaj i zapisz i 15 00:01:05,790 --> 00:01:10,120 wróć do ekranu dodawania miejsca, a to zdecydowanie nie tak powinno 16 00:01:11,240 --> 00:01:12,860 działać, więc to źle. 17 00:01:12,890 --> 00:01:19,640 Zamiast tego chcę przekazać niektóre dane do ekranu mapy, gdzie mogę dla jednego ustawić to tylko 18 00:01:19,880 --> 00:01:23,140 do odczytu, powiedzmy, więc przekażę rekwizyt tylko do 19 00:01:23,450 --> 00:01:32,870 odczytu i ustawię to na prawdę, a także chcę ustawić początkową lokalizację i ustawić to na przykład na obiekt, który w zasadzie przechodzę 20 00:01:32,870 --> 00:01:35,990 w tej lokalizacji, pokazuję również na podglądzie. 21 00:01:35,990 --> 00:01:46,870 Więc tutaj, mogę go wyciąć i stworzyć tutaj nową stałą pomocnika, wybrana lokalizacja jest teraz tylko tutaj i przekazuję ją jako 22 00:01:46,870 --> 00:01:54,310 lokalizację początkową tutaj, wybraną lokalizację i przekazuję ją do podglądu mojej mapy na prop 23 00:01:54,310 --> 00:01:57,440 lokalizacji i dzięki temu przekazujemy 24 00:01:57,510 --> 00:02:01,160 dane do ekranu mapy, teraz musimy je 25 00:02:01,170 --> 00:02:02,430 tam wykorzystać. 26 00:02:02,430 --> 00:02:08,940 Musimy więc użyć rekwizytu lub parametrów tylko do odczytu, aby upewnić się, że nie możemy wybrać nowego miejsca, początkowej lokalizacji, 27 00:02:08,940 --> 00:02:11,670 w której nadal będzie odtąd znajdował się znacznik. 28 00:02:12,620 --> 00:02:19,990 Więc teraz, aby wykorzystać wszystkie te informacje tutaj na ekranie mapy, mogę uzyskać moje dane z otrzymanych parametrów, więc 29 00:02:20,000 --> 00:02:30,380 uzyskuję moją początkową lokalizację, uzyskując dostęp do rekwizytów. nawigacja. położenie początkowe getParam, które można ustawić, 30 00:02:30,380 --> 00:02:37,940 oczywiście również może być niezdefiniowane, ale może być również ustawione i otrzymuję tylko do odczytu z nawigacją 31 00:02:37,970 --> 00:02:42,980 rekwizytów, otrzymuję parametry tylko do odczytu, które również mogą być niezdefiniowane. 32 00:02:43,150 --> 00:02:45,860 Teraz można teraz użyć 33 00:02:45,860 --> 00:02:51,680 początkowej lokalizacji do zainicjowania stanu. Teraz nie będzie to ponownie inicjowane za każdym razem, gdy to ponowne renderowanie, 34 00:02:51,680 --> 00:02:56,450 ale zamiast tego React zarządza tym tak, że ustawia stan początkowy i dla kolejnych cykli ponownego renderowania, jest to po prostu ignorowane. 35 00:02:57,650 --> 00:03:03,530 Więc teraz, kiedy będziemy mieli początkową lokalizację, nasz stan zostanie zainicjowany do tej doskonałej lokalizacji. 36 00:03:03,590 --> 00:03:09,290 Teraz pamiętaj, że to, co przekazałem do początkowej lokalizacji, to obiekt typu z lat i lng 37 00:03:09,290 --> 00:03:13,510 i to oczywiście powinno pasować do tego, co zarządzamy, z naszym stanem 38 00:03:13,510 --> 00:03:18,950 tutaj i tak jest, ponieważ tam też ustawiłem mój stan na obiekt z lat i lng, 39 00:03:18,950 --> 00:03:25,490 jeśli byłoby inaczej, potrzebowałbyś logiki do normalizacji tego. Teraz tylko do odczytu to kolejna rzecz, którą wyodrębniam i 40 00:03:25,490 --> 00:03:31,220 mogę użyć tego w module obsługi położenia, który jest uruchamiany za każdym razem, gdy naciśniemy mapę, i tam możemy 41 00:03:31,340 --> 00:03:37,940 sprawdzić, czy tylko odczyt jest prawdziwy, a jeśli nie jest zdefiniowany, będzie być fałszywym, ale jeśli to prawda, po prostu wracam tutaj, 42 00:03:37,940 --> 00:03:44,090 co oznacza, że nie kontynuuję, nie wybieram nowej lokalizacji. Dzięki temu wybranie lokalizacji powinno być wyłączone. 43 00:03:44,090 --> 00:03:47,900 Teraz chcę również pozbyć się przycisku zapisu, jeśli nie mamy nic do zapisania, więc jeśli 44 00:03:47,900 --> 00:03:53,630 jesteśmy w trybie tylko do odczytu, nie możemy nic zapisać. Więc headerRight powinien być ustawiony tylko wtedy, gdy 45 00:03:53,780 --> 00:03:58,790 nie jesteśmy w trybie tylko do odczytu, więc tutaj też wyodrębnię tryb tylko do odczytu 46 00:03:58,790 --> 00:04:02,200 za pomocą nawigacji, otrzymam parametry tylko do odczytu, co mogę 47 00:04:02,600 --> 00:04:09,230 oczywiście zrobić tutaj, a zatem teraz tutaj, jeśli jesteśmy w trybie tylko do odczytu, jeśli to prawda, to konfiguracja, którą 48 00:04:09,230 --> 00:04:10,550 zwracam, jest pustym 49 00:04:10,550 --> 00:04:14,240 obiektem, więc bez żadnego przycisku. Spróbujmy. 50 00:04:14,300 --> 00:04:22,550 Zapiszmy go i wróćmy, a jeśli teraz kliknę ten element i kliknę mapę, otworzy się, ale nie mam przycisku zapisu ani 51 00:04:22,550 --> 00:04:28,430 znacznika, więc to nie działa, ale przynajmniej nie mogę wybrać nowego jeden, to dobrze, ale 52 00:04:28,430 --> 00:04:32,030 marker też nie działa. Zanim to naprawimy, przejdźmy 53 00:04:32,030 --> 00:04:37,540 do nowego ekranu miejsca i zobaczmy, czy nadal możemy ustawić znacznik, i tak jest 54 00:04:37,550 --> 00:04:40,700 w tym przypadku, możemy wybrać miejsce, aby działało. 55 00:04:40,700 --> 00:04:48,640 Więc jedyne, co tak naprawdę nie działa, to ładowanie mapy z wybranym znacznikiem, a właściwie to nie jest poprawne, mamy znacznik, po 56 00:04:48,640 --> 00:04:49,360 prostu 57 00:04:49,360 --> 00:04:57,600 nie ma go tutaj na ekranie, który wybraliśmy w San Francisco. Jeśli pójdziemy tam 58 00:04:57,600 --> 00:05:02,750 do pleksa Google, tutaj jest 59 00:05:02,760 --> 00:05:06,160 znacznik. Więc to zapisało, po prostu 60 00:05:06,180 --> 00:05:08,880 nie skupiało się na tym, kiedy go załadowaliśmy, więc jest to 61 00:05:09,300 --> 00:05:13,970 drobna poprawka, którą powinniśmy również dodać na ekranie mapy. Tam powinniśmy upewnić się, 62 00:05:14,190 --> 00:05:22,240 że ten region mapy, który tu ustawiliśmy, uwzględnia również początkową lokalizację, jeśli 63 00:05:22,240 --> 00:05:26,590 ją mamy. Więc tutaj ustawiliśmy szerokość geograficzną, cóż, 64 00:05:26,620 --> 00:05:32,770 jeśli mamy początkową lokalizację, to chcę użyć początkowej lokalizacji. lat zamiast domyślnej, w przeciwnym razie 65 00:05:32,920 --> 00:05:36,550 używaj domyślnej, to samo oczywiście dla długości geograficznej. 66 00:05:36,550 --> 00:05:42,010 Jeśli mamy początkową lokalizację, początkowo chcę użyć jej długości geograficznej zamiast domyślnej. 67 00:05:44,060 --> 00:05:50,390 Teraz, jeśli to uratujemy, powinniśmy mieć mapę, która zostanie automatycznie wyśrodkowana na naszym znaczniku, jeśli otworzymy 68 00:05:50,390 --> 00:05:54,050 ją w trybie tylko do odczytu, więc tutaj rzeczywiście 69 00:05:54,470 --> 00:05:55,960 działa i jeśli 70 00:05:56,180 --> 00:06:01,840 oczywiście dodam nowe miejsce, to nadal działa. Tam otwieramy go w domyślnym 71 00:06:01,850 --> 00:06:08,840 miejscu, więc gdzieś tutaj w San Francisco. Dlatego wszystko działa, a teraz chcę go przetestować 72 00:06:08,870 --> 00:06:13,190 na niektórych rzeczywistych urządzeniach, zanim zakończę ten moduł i skończymy z 73 00:06:13,340 --> 00:06:17,240 dodawaniem funkcji natywnych urządzeń do naszej aplikacji React Native.