无法获取iOS MapKit Annotation来显示标题和副标题

时间:2017-04-09 01:30:14

标签: ios swift annotations mapkit

我在xCode中显示地图注释时遇到问题。我能够在正确的坐标上显示一个图钉,但我似乎无法弄清楚如何显示带有标题和副标题的注释。

我是xCode和Swift的新手,所以如果我使用不正确的术语(或者如果这是一个非常简单的问题要解决的话),请道歉!)我已经在网上搜索了大约2个小时,尝试不同的变化我的代码,但我不能让它工作!

我正在开发一个简单的应用程序,用户可以浏览位置,然后将其固定在地图上。一旦人们从一个位置点击进入MapViewController,我就会尝试显示一个固定位置的地图和一个带标题和副标题的注释。除了标题和副标题外,我已经知道了所有内容,所以我很感激任何帮助!

override func viewDidLoad() {
    super.viewDidLoad()

    // Location pin
    let initialLocation = CLLocation(latitude: location.latitude, longitude: location.longitude)
    self.centerMapOnLocation(location: initialLocation)


    // Annotation
    let annotation = MKPointAnnotation()
    annotation.title = self.location.name
    annotation.subtitle = self.location.type
    annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
    mapView.addAnnotation(location)

}

// Map Center on Location
func centerMapOnLocation(location: CLLocation) {
    let regionRadius: CLLocationDistance = 1000
    let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
    regionRadius * 2.0, regionRadius * 2.0)
    mapView.setRegion(coordinateRegion, animated: true)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

2 个答案:

答案 0 :(得分:0)

确保您的班级符合MGLMapViewDelegate并使用以下方法。

func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
   return true
}

答案 1 :(得分:0)

我想知道你是否应该将annotation而不是location添加到mapView中,即:

mapView.addAnnotation(annotation)

如果您想以编程方式显示标注,可以这样调用:

mapView.selectAnnotation(annotation, animated: true)