Ответ 1
Ваша переменная булавки правильная. Теперь вам просто нужно добавить эту аннотацию к MKMapView
.
Вы также можете создать собственный класс для MKAnnotation
, чтобы добавить пользовательскую аннотацию к отображению карты.
Бета-версия для MapExampleiOS8 = > Что поддерживает Swift 2.1
Выполните следующие шаги:
1. Добавьте MapKit.framework
к проекту.
2. Создайте переменную Storyboard IBOutlet
элемента управления отображением карты или создайте ее в виде контроллера. Установите делегат для этой переменной, чтобы переопределить его методы делегирования:
Добавить подпись делегата для просмотра интерфейса контроллера:
class ViewController: UIViewController, MKMapViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Set map view delegate with controller
self.mapView.delegate = self
}
}
3. Переопределите его методы делегирования:
Здесь нам нужно переопределить метод mapView(_:viewForAnnotation:)
, чтобы отображать значки аннотаций на карте.
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. Добавьте MKPointAnnotation
для отображения карты.
Вы можете добавить контакт к местоположению в виде карты. Для простоты добавьте код в метод 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)
}