Więc chcę przejść do ekranu mapy i tak naprawdę od samego początku chcę tam dodać znacznik, który również nie jest
w tej chwili obsługiwany
i chcę się upewnić, że nie mogę wybrać
nowej lokalizacji, więc kilka ograniczeń.
Kiedy klikamy podgląd mapy, onPress chcę przejść do innego ekranu po prawej stronie.
Dodam tutaj nową stałą, która będzie zawierać funkcję, którą nazwiebym show handler map, oczywiście, że mógłbyś również
użyć funkcji inline, i połączę show handler map z moją propozycją prasową
tutaj na podglądzie mapy .
Zostanie to uruchomione, gdy klikniemy podgląd, kiedy go klikniemy
i tutaj oczywiście chcę nawigować. Oczywiście można to zrobić za pomocą rekwizytów. nawigacja. nawiguj, a następnie przejdź
do ekranu mapy.
Problem polega tylko na tym, że
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ę
na to, wczytam ekran mapy, ale nie mam wcześniej wybranego miejsca i mogę również kliknij tutaj i zapisz i
wróć do ekranu dodawania miejsca, a to zdecydowanie nie tak powinno
działać, więc to źle.
Zamiast tego chcę przekazać niektóre dane do ekranu mapy, gdzie mogę dla jednego ustawić to tylko
do odczytu, powiedzmy, więc przekażę rekwizyt tylko do
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ę
w tej lokalizacji, pokazuję również na podglądzie.
Więc tutaj, mogę go wyciąć i stworzyć tutaj nową stałą pomocnika, wybrana lokalizacja jest teraz tylko tutaj i przekazuję ją jako
lokalizację początkową tutaj, wybraną lokalizację i przekazuję ją do podglądu mojej mapy na prop
lokalizacji i dzięki temu przekazujemy
dane do ekranu mapy, teraz musimy je
tam wykorzystać.
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,
w której nadal będzie odtąd znajdował się znacznik.
Więc teraz, aby wykorzystać wszystkie te informacje tutaj na ekranie mapy, mogę uzyskać moje dane z otrzymanych parametrów, więc
uzyskuję moją początkową lokalizację, uzyskując dostęp do rekwizytów. nawigacja. położenie początkowe getParam, które można ustawić,
oczywiście również może być niezdefiniowane, ale może być również ustawione i otrzymuję tylko do odczytu z nawigacją
rekwizytów, otrzymuję parametry tylko do odczytu, które również mogą być niezdefiniowane.
Teraz można teraz użyć
początkowej lokalizacji do zainicjowania stanu. Teraz nie będzie to ponownie inicjowane za każdym razem, gdy to ponowne renderowanie,
ale zamiast tego React zarządza tym tak, że ustawia stan początkowy i dla kolejnych cykli ponownego renderowania, jest to po prostu ignorowane.
Więc teraz, kiedy będziemy mieli początkową lokalizację, nasz stan zostanie zainicjowany do tej doskonałej lokalizacji.
Teraz pamiętaj, że to, co przekazałem do początkowej lokalizacji, to obiekt typu z lat i lng
i to oczywiście powinno pasować do tego, co zarządzamy, z naszym stanem
tutaj i tak jest, ponieważ tam też ustawiłem mój stan na obiekt z lat i lng,
jeśli byłoby inaczej, potrzebowałbyś logiki do normalizacji tego. Teraz tylko do odczytu to kolejna rzecz, którą wyodrębniam i
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
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,
co oznacza, że nie kontynuuję, nie wybieram nowej lokalizacji. Dzięki temu wybranie lokalizacji powinno być wyłączone.
Teraz chcę również pozbyć się przycisku zapisu, jeśli nie mamy nic do zapisania, więc jeśli
jesteśmy w trybie tylko do odczytu, nie możemy nic zapisać. Więc headerRight powinien być ustawiony tylko wtedy, gdy
nie jesteśmy w trybie tylko do odczytu, więc tutaj też wyodrębnię tryb tylko do odczytu
za pomocą nawigacji, otrzymam parametry tylko do odczytu, co mogę
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ą
zwracam, jest pustym
obiektem, więc bez żadnego przycisku. Spróbujmy.
Zapiszmy go i wróćmy, a jeśli teraz kliknę ten element i kliknę mapę, otworzy się, ale nie mam przycisku zapisu ani
znacznika, więc to nie działa, ale przynajmniej nie mogę wybrać nowego jeden, to dobrze, ale
marker też nie działa. Zanim to naprawimy, przejdźmy
do nowego ekranu miejsca i zobaczmy, czy nadal możemy ustawić znacznik, i tak jest
w tym przypadku, możemy wybrać miejsce, aby działało.
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
prostu
nie ma go tutaj na ekranie, który wybraliśmy w San Francisco. Jeśli pójdziemy tam
do pleksa Google, tutaj jest
znacznik. Więc to zapisało, po prostu
nie skupiało się na tym, kiedy go załadowaliśmy, więc jest to
drobna poprawka, którą powinniśmy również dodać na ekranie mapy. Tam powinniśmy upewnić się,
że ten region mapy, który tu ustawiliśmy, uwzględnia również początkową lokalizację, jeśli
ją mamy. Więc tutaj ustawiliśmy szerokość geograficzną, cóż,
jeśli mamy początkową lokalizację, to chcę użyć początkowej lokalizacji. lat zamiast domyślnej, w przeciwnym razie
używaj domyślnej, to samo oczywiście dla długości geograficznej.
Jeśli mamy początkową lokalizację, początkowo chcę użyć jej długości geograficznej zamiast domyślnej.
Teraz, jeśli to uratujemy, powinniśmy mieć mapę, która zostanie automatycznie wyśrodkowana na naszym znaczniku, jeśli otworzymy
ją w trybie tylko do odczytu, więc tutaj rzeczywiście
działa i jeśli
oczywiście dodam nowe miejsce, to nadal działa. Tam otwieramy go w domyślnym
miejscu, więc gdzieś tutaj w San Francisco. Dlatego wszystko działa, a teraz chcę go przetestować
na niektórych rzeczywistych urządzeniach, zanim zakończę ten moduł i skończymy z
dodawaniem funkcji natywnych urządzeń do naszej aplikacji React Native.