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