有没有办法更新(即移动)aMKOverlay
已经添加到MKMapView
。删除旧的并添加新的非常糟糕(慢)。
即我想当覆盖物在屏幕上移动时触发调用此函数的后台函数:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
(with MKAnnotions
我认为它好一点,但我不能使用MKPolyline
, MKPolygon
等等,整个信息被简化为一个点)
MKOverlayView
有以下方法强制 MapKit 重新渲染给定的 mapRect:
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale
如果您使用计时器(或定期 HTTP 请求或某种其他方法来确定您的叠加层应更新),则在overlayView 上调用上述方法之一将导致它重新渲染地图上的该点( IE。-canDrawMapRect:zoomScale:
将再次被调用,然后-drawMapRect:zoomScale:inContext:
如果前者返回 YES 将被调用)。
Update:
如果您不确定需要重新渲染哪个mapRect,您可以might能够使用MKMapRectWorld
常量作为mapRect——我相信这会导致整个地图上的覆盖层重新加载(一旦可见)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)