我正在使用自定义MKOverlay/MKOverlayView用我自己的异步加载的图block完全覆盖Googlebasemap。当我收到对覆盖View的canDrawMapRect:zoomScale:调用(并在这种情况下返回FALSE)时,我遵循请求卸载图block的模式,然后调用setNeedsDisplayInMapRect:zoomScale:一旦瓷砖可用。这一切通常都有效,并且在模拟器中似乎完美运行。但是,在设备上,我有时会在叠加层中看到一个“洞”——缺失的图block。我可以看到该图block已被请求,并且请求已完成。我可以看到我调用了setNeedsDisplayInM
我在map上有很多长折线。我想优化他们的绘图,因为在几千个点上,折线的绘制速度非常慢。我的drawMapRect看起来像这样:-foreachpolylinesegment-verifyifit'sboundingboxintersectsthecurrentlydrawnMKMapRect-ifiddoes,drawit如果没有太多的点,这会很好。但是当有8-16个maprects可见和2-3000个点时,它们在for中的运行速度非常慢。如果它们只是位置,一个解决方案是实现某种四叉树/r树结构,并且只过滤当前绘制的MKMapRect中的那些位置,但我不确定关于这是否适合折线本身。如果
我构建了一个自定义MKOverlayRenderer以构建多边形、应用混合模式,然后将它们添加到mapView。在我的drawMapRect函数中,我使用CGPoints数组来构建多边形,并创建路径。但是,在运行时,我的mapView上没有任何显示。我最好的猜测是我在drawMapRect函数中创建多边形的顺序。非常感谢任何帮助或指导,谢谢!overridefuncdrawMapRect(mapRect:MKMapRect,zoomScale:MKZoomScale,inContextcontext:CGContext){super.drawMapRect(mapRect,zoomSc