- Schritt 4: Locate Me-Taste: Standort auf der Karte anzeigen
- Fügen Sie der Karte eine Anmerkung hinzu
- Fügen Sie der Anmerkung die vollständige Adresse des Standorts als Titel hinzu
- Fügen Sie der Karte eine Ortsmarke aus einer Zeichenfolgenadresse hinzu
- Schritt 6: Echtzeitstandort auf der Karte anzeigen
- Schritt 7: Erstellen & Ausführen
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.
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:
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:
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
.
Jetzt aktualisieren wir den Aufruf auf updateLocationOnMap
mit unserer neuen lookUpLocationName
-Funktion.
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.
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.
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.