平移或缩放多个覆盖一个的MKMapView时更新到iOS 6之后,我已经注意到了服务器性能下降。 我创建了一个应用程序有各种颜色的大约600个多边形叠加,跑滞后免费的(甚至在老iOS设备)上的iOS 5,现在运行非常laggily在iOS 6(变焦时和平移),即使在最新的设备。
我的直觉是,这是由于该设备具有实际动态创建的地图(因为它的基于矢量的),而不是仅仅显示在屏幕上的瓷砖的事实。
有没有人有平移或缩放地图的任何想法,以减少所经历的滞后是什么时候?
一些额外的信息,这种低帧率也会发生,而缩放或平移,其中覆盖不显示在屏幕上,在各个领域,所以它不是做创建叠加的,因为他们来在屏幕上。
你可以尝试所有的叠加组合成一个单一的一个。 这可以大大提高性能。
我们的想法是创建一个包含所有你的多边形的边框覆盖。 这样,你mapView: viewForOverlay
将始终被调用。 为您的覆盖保存所有多边形的属性。 然后在drawMapRect:
你的重叠视图的方法,测试所有的多边形与相交mapRect
并在必要时吸引他们。 因为你不希望绘制是关闭屏幕的多边形这是非常重要的。
这种策略是基于苹果自己的MapKit示例项目。 退房HazardMap在单个MKOverlayView绘制几个对象的示例,并检查了面包屑为如何有效地与您当前的测试交集多边形的例子mapRect
在drawMapRect
方法
我有一个简约MapKit技术演示和它的滞后明显,因为我在iPad 3与iOS6的运行它。 剖析表明,它是CPU绑定,但只有0.2%是从我自己的代码。 在我的情况下,大的罪魁祸首是使道路,随后呈现标签 - 无论是通过MapKit完成。 我显示旧金山市中心在5KM的规模,所以有很多道路和标签来呈现的。
所以这个故事的寓意是:iOS6的地图是缓慢的。 不能告诉你如何比较的iOS5或一个iPad 2,虽然。 但它是滞后的,而我几乎没有做我自己的任何工作都没有。
PS:打开仪器,使用时间探查。 做一个记录+向下钻取找到你的罪魁祸首。 然后选中“隐藏系统库”,以找出多少的滞后性是你的责任VS MapKit的。 根据需要那么只有优化。