IOP上的Mapkit是否支持覆盖的出列? (就像它注释一样)

时间:2016-05-16 06:24:47

标签: mkmapview mapkit overlay mkannotation mkoverlay

IOS上的Mapkit是否支持叠加出列? (就像它注释一样)。如果是这样,实现这一目标的代码是什么?

背景:使用注释我相信你可以添加很多,让MapKit通过出列方法在需要时实例化视图。如果我在全国各地有很多人,那么叠加层会怎样?我是否需要编写代码来检查我有哪些叠加是可见的,然后实时实例化/删除它们?

1 个答案:

答案 0 :(得分:3)

Map Kit不支持重复使用叠加,就像它支持对注释视图执行此操作一样。其中一个原因当然必须是两个对象不相似。叠加是表示地图上的区域的模型对象,而注释视图是不时用于在地图上显示注释位置的视图对象。重用视图对象的技术(与为每次使用创建单独的对象相反)是在UIKit中的其他几个地方使用的优化,特别是对于表视图单元格和各种集合视图。

视图重用模式是建立一些数据索引(表索引路径,地图坐标),然后让委托提供适当的视图对象,以便在特定索引/位置进入视图时使用。当数据对象消失时,视图对象将在队列中循环使用。

注释类似于覆盖,并且MapKit也没有为它们提供重用,并且有充分的理由:它们是正在显示的数据!

注释视图的类似对象是叠加渲染器,它(当然!)为叠加层提供渲染。我认为这些不被重用的原因是因为它们不是视图系统对象,并且可能更轻量级,因此重用几乎没有好处。我们找到了证据,因为在iOS 7.0之前,MapView委托 为覆盖提供了一个视图对象,并且它被渲染器概念所取代。

我希望有所帮助。

这会给你带来什么问题?