Krok 4: Znajdź mnie przycisk: Pokaż lokalizację na mapie
pierwszy krok, odzyskamy bieżącą lokalizację, gdy użytkownik naciśnie przycisk locate-me 🧭.
menedżer lokalizacji podaje bieżącą lokalizację w obiekcie CLLocation
z locationManager.location
. Obiekt ten zawiera różne informacje, w tym wartości współrzędnych szerokości i długości geograficznej.
dodaj adnotację do mapy
stwórzmy nową funkcję, która doda adnotację do mapy na podanych współrzędnych.
poniższa funkcja tworzy nowy obiekt MKPointAnnotation
i dodaje go do mapy po usunięciu wszystkich poprzednich adnotacji. Powiększa i przewija mapę, aby umieścić nowo dodaną adnotację na środku ekranu.
teraz, gdy mamy tę funkcję, możesz ją wywołać z aktualnymi informacjami o lokalizacji, które chcesz wyświetlić, w przycisku funkcji IBAction. Na razie umieścimy nil
jako tytuł, ponieważ nie mamy jeszcze tej informacji.
updateLocationOnMap(to: locationManager.location, with: nil)
Dodaj pełny adres lokalizacji jako tytuł do adnotacji
teraz dodamy pełny adres lokalizacji jako tytuł do adnotacji. CoreLocation daje nam to łatwe do zrobienia z CLGeocoder
.
Utwórz rozszerzenie do CLLocation
i dodaj następującą funkcję:
odwróci lokalizację geokodu i daje CLPlacemark
, zawierający wszystkie informacje potrzebne do wyodrębnienia pełnego adresu pocztowego.
informacje adresowe są przechowywane jak poniżej w obiekcie Placemark. Aby uzyskać wartość ciągową pełnego adresu, będziesz musiał połączyć potrzebne komponenty. Oto przykład adresu siedziby Apple w poniższej tabeli:
dodajmy funkcję do naszego rozszerzenia CLLocation
, która bezpośrednio poda nam pełny adres. Dla wygody możesz dodać nową właściwość w rozszerzeniu CLPlacemark
. W tym przykładzie właściwość ta nazywa się stringValue
.
teraz zaktualizujmy wywołanie do updateLocationOnMap
za pomocą naszej nowej funkcji lookUpLocationName
.
Zbuduj i uruchom swoją aplikację: teraz po naciśnięciu przycisku locate-me na mapie zostanie dodana Twoja aktualna lokalizacja, wyświetlając pełny adres Twojej bieżącej lokalizacji!
Dodaj znacznik miejsca z adresu łańcucha do mapy
większość funkcji napisanej w Kroku 3 dla przycisku locate-me będzie również używana w tej części. Dodamy tylko nową funkcję updatePlaceMark(to address: String)
i wywołamy ją po sprawdzeniu poprawności TextField.
w tej funkcji najpierw otrzymamy znaczniki miejsc z wartości łańcuchowej wprowadzonej przez Użytkownika, następnie zaktualizujemy mapę o pierwszy znacznik miejsca z jego pełną wartością adresu.
zauważ, że geocodeAddressString
nie jest funkcją wyszukiwania lokalizacji, więc do jej działania będzie potrzebny poprawny adres i identyfikowalna lokalizacja, miasto, stan lub kraj w polu, aby uzyskać wynik.
Krok 6: Pokaż lokalizację w czasie rzeczywistym na mapie
aby wyświetlić lokalizację w czasie rzeczywistym, dodaj następującą funkcję delegowania w już utworzonym rozszerzeniu CLLocationManagerDelegate
.
Menedżer lokalizacji wywoła tę funkcję automatycznie po aktualizacji lokalizacji, zgodnie z zasadami zdefiniowanymi na początku.
Krok 7: Zbuduj& Uruchom
Zbuduj i uruchom aplikację: Teraz masz aplikację mapową, która pokazuje Twoją aktualną lokalizację, wyświetlając pełny adres w czasie rzeczywistym, lokalizując cię po dotknięciu przycisku Znajdź mnie i umożliwiając wyszukiwanie lokalizacji z pola tekstowego.