注释视图不显示

时间:2017-02-20 01:25:38

标签: ios swift

我创建了一个名为“PlaceAnnotationView”的自定义注释视图,如下所示:

viewForAnnotation

然后在 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { if annotation is MKUserLocation { return nil } var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "PlaceAnnotationView") if annotationView == nil { annotationView = PlaceAnnotationView(annotation: annotation, reuseIdentifier: "PlaceAnnotationView") annotationView?.canShowCallout = true } return annotationView } 中,我返回我的自定义注释视图,如下所示:

private func populateNearByPlaces() {

        var region = MKCoordinateRegion()
        region.center = CLLocationCoordinate2D(latitude: self.mapView.userLocation.coordinate.latitude, longitude: self.mapView.userLocation.coordinate.longitude)

        let request = MKLocalSearchRequest()
        request.naturalLanguageQuery = self.selectedCategory
        request.region = region

        let search = MKLocalSearch(request: request)
        search.start { (response, error) in

            guard let response = response else {
                return
            }

            for item in response.mapItems {

                let annotation = PlaceAnnotation()
                annotation.title = item.name
                annotation.subtitle = "subtitle"
                annotation.mapItem = item

                DispatchQueue.main.async {
                    self.mapView.addAnnotation(annotation)
                }


            }

        }


    }

以下是添加注释的代码:

import Foundation
import MapKit

class PlaceAnnotationView : MKPinAnnotationView {

    override init(annotation: MKAnnotation?, reuseIdentifier: String?) {

        super.init(annotation: annotation, reuseIdentifier: reuseIdentifier)

    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

以下是PlaceAnnotationView的代码:

class PlaceAnnotation : MKPointAnnotation {

    var mapItem :MKMapItem!

}

以下是PlaceAnnotation的代码:

导入基金会 导入MapKit

viewForAnnotation

但我没有在地图上看到我的任何注释。对于我的每个注释,{{1}}被多次触发,但在屏幕上不显示任何内容。

1 个答案:

答案 0 :(得分:2)

根据您(非常不情愿)选择显示的代码,似乎问题是您从未设置注释的coordinate。但注释的coordinate 至关重要。这就是注释如何说明它应该在世界中的位置,以及与此注释关联的注释视图如何知道地图上的显示位置。因此,与此注释关联的注释视图知道要在地图上显示的位置。因此不会出现。