Ios 固定索引下的MKMapView覆盖

Ios 固定索引下的MKMapView覆盖,ios,mkmapview,mkoverlay,Ios,Mkmapview,Mkoverlay,我混合了MKCircle、MKPolygon和MKPolyline叠加,我希望它们以特定的顺序出现。这些覆盖层并不总是同时创建,但创建时应显示在其他覆盖层的下方/上方 [self.mapview insertOverlay:example1 atIndex:6]; 将覆盖层放在列表的末尾,但如果此时似乎只有2个覆盖层,则不将其放在第6层。我想把覆盖层推到正确的层 [self.mapview insertOverlay:example2 atIndex:5]; 这一个我想在示例1上面,但由于那

我混合了
MKCircle
MKPolygon
MKPolyline
叠加,我希望它们以特定的顺序出现。这些覆盖层并不总是同时创建,但创建时应显示在其他覆盖层的下方/上方

[self.mapview insertOverlay:example1 atIndex:6];
将覆盖层放在列表的末尾,但如果此时似乎只有2个覆盖层,则不将其放在第6层。我想把覆盖层推到正确的层

[self.mapview insertOverlay:example2 atIndex:5];
这一个我想在示例1上面,但由于那一个得到了3,示例2现在位于底部

我正在考虑检查创建了哪些覆盖,然后创建一个数组,并使用
addOverlays
推送所有覆盖,但不确定它会对性能造成多大影响

他们有什么聪明的方法来实现这一点吗


欢呼,Trd

< P>当你需要更多的注释或覆盖的结构化管理时,你要考虑引入一组单独的数据结构来表示你的组织模型(类似于一个人如何管理UITababVIEW数据源)。MKMapView的助手对象或子类可以工作;我更喜欢前者

在您的情况下,可能需要一个数组数组。顶层数组表示每个逻辑“层”。该数组中的每个元素都是该层上的覆盖数组。这些数据结构应作为助手类的私有成员,与MKMapView对象的弱引用或出口一起拥有。提供添加/删除覆盖的方法,例如
addoverlayer:atLayer:
removeOverlay:
,或接受覆盖数组的复数变体。helper类首先将给定的覆盖添加到适当的“layer”子数组中。然后,通过将其他层的数组计数相加,它可以计算出正确的索引值,以便在发送到MKMapView的
insertOverlay:atIndex:
消息中使用

我认为不会对性能或内存使用产生任何重大影响

通过使用单独的helper类而不是MKMapView的子类,或者在视图控制器中嵌入代码,可以更容易地在多个视图控制器中重用该类,也可以更容易地进行单元测试