我想知道是否有人能告诉我如何以MKPointAnnotations的形式触摸地图上的图钉.
我想点击地图上的图钉并通过返回我预设的图钉的变量转到另一个视图.
任何人都可以在Swift中解释我这件事吗?
谢谢
使用代码编辑:
class ViewController: UIViewController,MKMapViewDelegate { @IBOutlet weak var mappa: MKMapView! override func viewDidLoad() { super.viewDidLoad() var location : CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 44.648590,longitude: 10.918794) let pinAnnotation = PinAnnotation() pinAnnotation.setCoordinate(location) self.mappa.addAnnotation(pinAnnotation) } class PinAnnotation : NSObject,MKAnnotation { private var coord: CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0,longitude: 0) var coordinate: CLLocationCoordinate2D { get { return coord } } var title: String = "test" var subtitle: String = "test" func setCoordinate(newCoordinate: CLLocationCoordinate2D) { self.coord = newCoordinate } } func mapView(mapView: MKMapView!,viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if annotation is PinAnnotation { let pinAnnotationView = MKPinAnnotationView(annotation: annotation,reuseIdentifier: "myPin") pinAnnotationView.pinColor = .Purple pinAnnotationView.draggable = true pinAnnotationView.canShowCallout = true pinAnnotationView.animatesDrop = true let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton deleteButton.frame.size.width = 44 deleteButton.frame.size.height = 44 deleteButton.backgroundColor = UIColor.redColor() deleteButton.setImage(UIImage(named: "trash"),forState: .Normal) pinAnnotationView.leftCalloutAccessoryView = deleteButton return pinAnnotationView } return nil } func mapView(mapView: MKMapView!,annotationView view: MKAnnotationView!,calloutAccessoryControlTapped control: UIControl!) { if let annotation = view.annotation as? PinAnnotation { self.mapView.removeAnnotation(annotation) } } }
有几个步骤是必要的,这里有一些代码片段可以帮助您入门.
首先,您需要一个自定义类用于您的引脚注释,它包含您要使用的数据.
import MapKit import Foundation import UIKit class PinAnnotation : NSObject,longitude: 0) var coordinate: CLLocationCoordinate2D { get { return coord } } var title: String = "" var subtitle: String = "" func setCoordinate(newCoordinate: CLLocationCoordinate2D) { self.coord = newCoordinate } }
然后你需要一个符合MKMapViewDelegate协议的MKMapView自定义类.在那里实现方法viewForAnnotation:
import MapKit import CLLocation import Foundation import UIKit class MapViewController: UIViewController,MKMapViewDelegate { ... func mapView(mapView: MKMapView!,viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { if annotation is PinAnnotation { let pinAnnotationView = MKPinAnnotationView(annotation: annotation,reuseIdentifier: "myPin") pinAnnotationView.pinColor = .Purple pinAnnotationView.draggable = true pinAnnotationView.canShowCallout = true pinAnnotationView.animatesDrop = true let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton deleteButton.frame.size.width = 44 deleteButton.frame.size.height = 44 deleteButton.backgroundColor = UIColor.redColor() deleteButton.setImage(UIImage(named: "trash"),forState: .Normal) pinAnnotationView.leftCalloutAccessoryView = deleteButton return pinAnnotationView } return nil } func mapView(mapView: MKMapView!,calloutAccessoryControlTapped control: UIControl!) { if let annotation = view.annotation as? PinAnnotation { mapView.removeAnnotation(annotation) } }
这给你这样的东西:
要在地图中添加新注释,请在代码中的某处使用:
let pinAnnotation = PinAnnotation() pinAnnotation.setCoordinate(location) mapView.addAnnotation(pinAnnotation)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。