So fügen Sie Ihrer App mit MapKit und Core Location eine Karte hinzu– iOS Swift Guide

Schritt 4: Locate Me-Taste: Standort auf der Karte anzeigen

Im ersten Schritt rufen wir den aktuellen Standort ab, wenn der Benutzer die locate-me-Taste drückt 🧭.

Der Standortmanager gibt Ihnen den aktuellen Standort in einem CLLocation Objekt mit locationManager.location. Dieses Objekt enthält verschiedene Informationen, einschließlich Breiten- und Längenkoordinatenwerte.

Fügen Sie der Karte eine Anmerkung hinzu

Erstellen wir eine neue Funktion, die der Karte an den angegebenen Koordinaten eine Anmerkung hinzufügt.

Die folgende Funktion erstellt ein neues MKPointAnnotation -Objekt und fügt es der Karte hinzu, nachdem alle vorherigen Anmerkungen entfernt wurden. Es zoomt und scrollt auch die Karte, um die neu hinzugefügte Anmerkung in der Mitte des Bildschirms zu platzieren.

Fügen Sie der Karte eine Anmerkung hinzu

Jetzt, da wir diese Funktion haben, können Sie sie mit den aktuellen Standortinformationen aufrufen, die Sie in Ihrer button IBAction-Funktion anzeigen möchten. Im Moment setzen wir nil als Titel, da wir diese Informationen noch nicht haben.

updateLocationOnMap(to: locationManager.location, with: nil)

Fügen Sie der Anmerkung die vollständige Adresse des Standorts als Titel hinzu

Jetzt fügen wir der Anmerkung die vollständige Adresse des Standorts als Titel hinzu. CoreLocation gibt uns eine einfache Möglichkeit, dies mit CLGeocoder zu tun.

Erstellen Sie eine Erweiterung zu CLLocation und fügen Sie die folgende Funktion hinzu:

Ortsmarke für Standort abrufen

Es kehrt den Geocode-Standort um und gibt Ihnen einen CLPlacemark , der alle Informationen enthält, die zum Extrahieren der vollständigen Postanschrift erforderlich sind.

Adressinformationen werden wie unten im Ortsmarkenobjekt gespeichert. Um einen String-Wert der vollständigen Adresse zu erhalten, müssen Sie die benötigten Komponenten verketten. Hier ist ein Beispiel für die Apple HQ-Adresse in der folgenden Tabelle:

Werte entsprechend CLPlacemark Eigenschaften

Fügen wir unserer Erweiterung CLLocation eine Funktion hinzu, die uns direkt die vollständige Adresse gibt. Der Einfachheit halber können Sie eine neue Eigenschaft in einer Erweiterung von CLPlacemark hinzufügen. In diesem Beispiel heißt diese Eigenschaft stringValue.

Holen Sie sich die vollständige String-Adresse von Location

Jetzt aktualisieren wir den Aufruf auf updateLocationOnMap mit unserer neuen lookUpLocationName -Funktion.

Zeigen Sie den aktuellen Standort auf der Karte von Button Tap

Erstellen und Ausführen Ihrer App: Wenn Sie jetzt die Locate-me-Taste drücken, wird Ihr aktueller Standort auf der Karte hinzugefügt und zeigt die vollständige Adresse Ihres aktuellen Standorts an!

Fügen Sie der Karte eine Ortsmarke aus einer Zeichenfolgenadresse hinzu

Die meisten Funktionen, die wir in Schritt 3 für die locate-me-Schaltfläche geschrieben haben, werden auch in diesem Teil verwendet. Wir werden nur eine neue Funktion updatePlaceMark(to address: String) hinzufügen und sie bei der Textfeldvalidierung aufrufen.

In dieser Funktion erhalten wir zuerst Ortsmarken aus dem vom Benutzer eingegebenen Zeichenfolgenwert und aktualisieren dann die Karte mit der ersten Ortsmarke mit dem vollständigen Adresswert.

Zeigen Sie den Standort auf der Karte basierend auf einer Zeichenfolge an Adresse

Beachten Sie, dass geocodeAddressString keine Standortsuchfunktion ist.

Schritt 6: Echtzeitstandort auf der Karte anzeigen

Um den Echtzeitstandort anzuzeigen, fügen Sie die folgende Delegatfunktion in die bereits erstellte Erweiterung CLLocationManagerDelegate ein.

Der Standortmanager ruft diese Funktion bei Standortaktualisierungen gemäß der zu Beginn definierten Richtlinie automatisch auf.

Echtzeitstandort auf der Karte anzeigen

Schritt 7: Erstellen & Ausführen

Erstellen und Ausführen Ihrer App: Sie haben jetzt eine Karten-App, die Ihnen Ihren aktuellen Standort anzeigt, die vollständige Adresse in Echtzeit anzeigt, Sie mit einem Tippen auf die Locate-me-Schaltfläche lokalisiert und Ihnen die Suche nach Standorten über ein Textfeld ermöglicht.



+