Jak dodać mapę do aplikacji za pomocą MapKit i lokalizacji rdzenia– iOS Swift Guide

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 CLLocationz 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.

dodaj adnotację do mapy

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ę:

Pobierz znacznik Miejsca dla lokalizacji

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:

wartości odpowiadające właściwościom CLPlacemark

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.

uzyskaj pełny adres z lokalizacji

teraz zaktualizujmy wywołanie do updateLocationOnMap za pomocą naszej nowej funkcji lookUpLocationName.

Show current location on Map from button tap

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.

Pokaż lokalizację na mapie na podstawie adresu ciągu

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.

Pokaż lokalizację w czasie rzeczywistym na mapie

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.



+