Ich bin neu in der Swift-Sprache und habe noch keine Anwendung mit Mapkit erstellt. Aber ich habe die Karte und die Regionen festgelegt, aber ich bin nicht mehr daran interessiert, wie man Pins hinzufügen darf. Lassen Sie mich klarstellen, ich habe keine Ahnung, wo ich anfangen soll. Alles, was ich im Moment (für die Pins) habe, ist meine Variable, aber ich bin mir nicht mal sicher, ob das stimmt. Jede Hilfe wäre sehr dankbar !! Was ich habe ...
var MyPins: MKPinAnnotatoinView!
......
override func viewDidLoad() {
super.viewDidLoad()
Mapview-Code
..........}
Ihre Pin-Variable ist korrekt. Jetzt müssen Sie diese Anmerkung nur noch zu MKMapView
hinzufügen.
Sie können auch eine benutzerdefinierte Klasse für MKAnnotation
erstellen, um der Kartenansicht benutzerdefinierte Annotationen hinzuzufügen.
Eine Beta-Demo für MapExampleiOS8 => die Swift 2.1 unterstützt
Führen Sie die folgenden Schritte aus:
1. Fügen Sie MapKit.framework
zum Projekt hinzu.
2. Erstellen Sie die Storyboard-Variable IBOutlet
des Kartenansicht-Steuerelements oder erstellen Sie sie im Ansichts-Controller. Legen Sie Delegate für diese Variable fest, um ihre Delegatmethoden zu überschreiben:
Fügen Sie die Delegierungssignatur zur Ansicht der Controller-Schnittstelle hinzu:
class ViewController: UIViewController, MKMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
}
}
3. Überschreiben Sie seine Delegatmethoden:
Hier müssen wir die mapView(_:viewForAnnotation:)
-Methode überschreiben, um Anmerkungs-Pins auf der Karte anzuzeigen.
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
if (annotation is MKUserLocation) {
return nil
}
if (annotation.isKind(of: CustomAnnotation.self)) {
let customAnnotation = annotation as? CustomAnnotation
mapView.translatesAutoresizingMaskIntoConstraints = false
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotation") as MKAnnotationView!
if (annotationView == nil) {
annotationView = customAnnotation?.annotationView()
} else {
annotationView?.annotation = annotation;
}
self.addBounceAnimationToView(annotationView)
return annotationView
} else {
return nil
}
}
4. Fügen Sie MKPointAnnotation
zur Kartenansicht hinzu.
In der Kartenansicht können Sie dem Standort eine Pin hinzufügen. Zur Vereinfachung fügen Sie der viewDidLoad()
-Methode Code hinzu.
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
let newYorkLocation = CLLocationCoordinate2DMake(40.730872, -74.003066)
// Drop a pin
let dropPin = MKPointAnnotation()
dropPin.coordinate = newYorkLocation
dropPin.title = "New York City"
mapView.addAnnotation(dropPin)
}
Sie müssen eine Methode aufrufen, wann und wo der Benutzer die PIN hinzufügen muss. Wenn Sie einen Pin hinzufügen möchten, an dem der Benutzer auf der Karte tippt und hält, müssen Sie einen GestureRecognizer aufrufen. Wenn Sie dies jedoch über eine Schaltfläche tun möchten, rufen Sie das natürlich in einer Aktion auf. In jedem Fall wird die Dokumentation zum Hinzufügen von Pins ausführlich besprochen Hier