2017-09-02 21 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); 

} 
相關問題