小编Jav*_*cio的帖子

iOS 11中MKMapView集群的性能不佳

我一直在使用第三方库来处理标记聚类.由于iOS 11有自己的实现,我决定继续代表"本机"实现移除第三方库.

我已经从WWDC 2017下载了示例应用程序,并按照相同的步骤操作,因此:

  • 连接MKMapView插座
  • MKAnnotation为我的模型实现协议
  • 创建一个MKMarkerAnnotationViewfor marker的视图
  • 创建一个MKMarkerAnnotationViewfor cluster的视图
  • 使用register(_: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)

mapkit ios swift

12
推荐指数
1
解决办法
1520
查看次数

标签 统计

ios ×1

mapkit ×1

swift ×1