我一直在使用第三方库来处理标记聚类.由于iOS 11有自己的实现,我决定继续代表"本机"实现移除第三方库.
我已经从WWDC 2017下载了示例应用程序,并按照相同的步骤操作,因此:
MKMapView插座MKAnnotation为我的模型实现协议MKMarkerAnnotationViewfor marker的视图MKMarkerAnnotationViewfor cluster的视图_:forAnnotationViewWithReuseIdentifier:)函数在mapView引用上注册两个注释但是,在使用第三方库时,一切都很好,使用这种方法,当我平移我的mapView并更改区域时,我的性能非常差.CPU使用率提升高达90%,而内存似乎保持稳定,我感觉延迟移动,有时甚至是应用程序崩溃.我正在加载大约600个注释.
有什么建议吗?
这是代码:
class MapViewClusteringViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
private var databaseService: LocalDataService!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
mapView.register(StopMarker.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
mapView.register(StopCluster.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultClusterAnnotationViewReuseIdentifier)
databaseService.fetchMarkers { markers in
mapView.addAnnotation(markers)
}
}
}
class StopMarker: MKMarkerAnnotationView {
override var annotation: MKAnnotation? {
willSet {
clusteringIdentifier = "busStopCluster"
subtitleVisibility = .adaptive
markerTintColor = .red …Run Code Online (Sandbox Code Playgroud)