更具体地说... iOS 的 MapKit 框架是否在渲染之前内置了 MKPolyline 和 MKPolygon 叠加层的泛化?
模拟器看起来很粗糙,显示了由数百个点组成的几条折线。我是否达到了 iPhone 的绘图性能的顶峰,还是 MapKit 没有编程为自动概括数据从而使设备的绘图性能达到峰值?
我知道我可以制作一个测试用例进行比较,但是为测试用例创建/集成这样的算法是相当密集的。我希望在我需要求助之前,有人对此有所了解。
谢谢!
我不知道这generalize
部分,但您可以通过使用另一种方法来保持性能:
在地图上绘制时,多个 MKPolygons 等会导致大量内存使用。这是由于 MapKit 没有重用覆盖。由于注释具有reuseWithIdentifier,但覆盖却没有。每个叠加层都会在地图上创建一个新图层作为 MKOverlayView,其中包含叠加层。这样一来,内存使用量将快速上升,滚动变得……让我们说缓慢到几乎不可能。
因此有一种解决方法:您可以将所有 MKOverlays(在您的情况下为 MKPolygons 和 MKPolylines)添加到一个 MKOverlayView,而不是单独绘制每个叠加层。这样,您实际上只创建了一个 MKOverlayView,因此无需重用。
这个问题的答案包含一个指向 Apple Developer Forum 的链接以及解决方法。
我已经以多种方式使用了这种方法,MKPolygons
并且效果很好。此外,我计划MKPolylines
将来用于我的应用程序。我相信可以将它们全部绘制在一个MKOverlayView
...
使用这种方法,您可能不需要generalize
绘制 MKPolygon 叠加层。此外,实施和测试 IMO 也容易得多;-)