Twoja zmienna szpilki jest poprawna. Teraz wystarczy dodać tę adnotację do MKMapView
.
Można również utworzyć niestandardową klasę dla MKAnnotation
, aby dodać niestandardową adnotację do widoku mapy.
beta demo MapExampleiOS8 => Które obsługuje Swift 2,1
Postępuj zgodnie z poniższymi wskazówkami:
1. Dodaj MapKit.framework
do projektu.
2. Tworzenie Storyboard zmienna IBOutlet
z widoku mapy sterowania lub utworzyć go w widoku kontrolera. Ustaw delegat dla tej zmiennej, aby zastąpić go za metody Delegat:
Dodaj podpis delegata, aby wyświetlić interfejs kontrolera:
class ViewController: UIViewController, MKMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
}
}
3. Zastąp swoje metody Delegat:
Tutaj musimy nadpisać mapView(_:viewForAnnotation:)
Metoda wyświetlania pinów adnotacji na mapie.
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. Dodaj MKPointAnnotation
do widoku mapy.
Możesz dodać pinezkę do lokalizacji w widoku mapy. Dla uproszczenia dodaj kod do metody viewDidLoad()
.
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)
}
Tak, to działa! Prosty i krótki sposób. – Mehmet