如何在MapKit中获得可见的叠加层? (即来自Mapkit Ivew的MKOverlay / MKOverlayRender)

时间:2016-05-25 09:42:41

标签: ios mkmapview mapkit mkoverlay mkoverlaypathrenderer

如何从MapkitView获取当前可见叠加层的列表(数组)?

背景 - 例如我想在mapkitview上向某些叠加类型的中心显示方向箭头,但是如何获得可见的?似乎没有办法做到这一点,我可以看到?所以我需要通过所有叠加(实际上~8000)并自己检查以查看屏幕上会显示什么?如果MapKit已经有效地完成了这项工作,那么这似乎是一种浪费,这是决定在给定时间需要显示哪些叠加层的一部分。

2 个答案:

答案 0 :(得分:1)

我一直在修补一些类似的问题,我能想出的最有效的方法是将叠加层添加为注释,因为MKOverlay实现了MKAnnotation。然后,您可以将annotationsInMapRect用于当前显示的mapRect。但是,这也会返回任何常规MKAnnotations,并且仅使用计算的叠加中间。唯一的方法(据我所知)只获得叠加层将迭代每个叠加层并使用:

-(BOOL)intersectsMapRect:(MKMapRect)mapRect;

在当前可见的mapRect上。 如果你找到另一种我很乐意听到的方式!

答案 1 :(得分:0)

对于其他使用谷歌搜索功能并且想要在Swift中获得某些功能的人,您可以使用:

let map = MKMapView()
let arrayOfOverlays : [MKOverlay] = []

for overlay in map.overlays {

    if overlay.boundingMapRect.intersects(map.visibleMapRect) {
        arrayOfOverlays.append(overlay)
    }

}