2017-09-02 20 views
0

我试图将标题和副标题添加到我的注释中,但是我所有的尝试都失败了。请帮帮我!如何在swift 3中将标题和副标题添加到我的注释中?

import UIKit 
import MapKit 

class MyPointAnnotation : MKPointAnnotation{ 
    var pinTintColor: UIColor? 

} 

class MapViewController: UIViewController, MKMapViewDelegate { 


    @IBOutlet weak var mapView: MKMapView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     mapView.delegate = self; 


     let hello = MyPointAnnotation() 
     hello.coordinate = CLLocationCoordinate2D(latitude: 46.771210, longitude: 23.623635) 
     hello.title = "tile" 
     hello.subtitle = "subtitle" 

     hello.pinTintColor = .blue 

     let hellox = MyPointAnnotation() 
     hellox.coordinate = CLLocationCoordinate2D(latitude: 44.426767, longitude: 26.102538) 
     hellox.pinTintColor = .blue 

     mapView.addAnnotation(hello) 
     mapView.addAnnotation(hellox) 
     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
     var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "myAnnotation") as? MKPinAnnotationView 

     if annotationView == nil { 
      annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation") 
     } else { 
      annotationView?.annotation = annotation 
     } 

     if let annotation = annotation as? MyPointAnnotation { 
      if #available(iOS 9.0, *) { 
       annotationView?.pinTintColor = annotation.pinTintColor 
      } else { 
       // Fallback on earlier versions 
      } 
     } 

     return annotationView 
    } 
} 
+0

你说的注解解决的问题出现,但没有一个标题和副标题,或从未出现的注释? – matt

+0

显示为无标题和副标题 – Sabin

+0

您是否使用调试器在每次调用时浏览'viewFor',并查看标题和副标题是否实际按照您的预期添加? – matt

回答

0

您需要设置canShowCallout才能显示标题和副标题。

请尝试下面的代码。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 
    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "myAnnotation") as? MKPinAnnotationView 

    if annotationView == nil { 
     annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotation") 
     annotationView?.canShowCallout = true 
    } else { 
     annotationView?.annotation = annotation 
    } 

    if let annotation = annotation as? MyPointAnnotation { 
     if #available(iOS 9.0, *) { 
      annotationView?.pinTintColor = annotation.pinTintColor 
     } else { 
      // Fallback on earlier versions 
     } 
    } 

    return annotationView 
} 
+0

非常感谢您的兄弟!你是上帝! – Sabin

0

我下面code.In迅速4

@IBOutlet weak var map: MKMapView! 
override func viewDidLoad() { 
let location = CLLocationCoordinate2D(latitude: 12.956360, longitude: 77.716615) 

let annotation = MKPointAnnotation() 
annotation.coordinate = CLLocationCoordinate2D(latitude: 12.956360, longitude: 77.716615) 
map.setRegion(MKCoordinateRegionMakeWithDistance(location, 1500, 1500), animated: true) 
annotation.title = "your title" 
annotation.subtitle = "your subtitle" 
map.addAnnotation(annotation); 

} 
相关问题