有没有办法更新(即移动)已经添加到MKMapView中的MKOverlay。删除一个旧的并添加一个新的是可怕的(缓慢的)。
也就是说,当屏幕上的覆盖图移动时,我想触发调用此函数的后台函数:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay(我认为使用MKAnnotions要好一点,但我不能使用MKPolyline、MKPolygon等,而且整个信息都被压缩到一个点上)
发布于 2010-08-12 02:34:16
MKOverlayView具有以下方法,强制MapKit重新呈现给定的mapRect:
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect
- (void)setNeedsDisplayInMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale
如果你使用计时器(或者定期的超文本传输协议请求或者其他一些方法来确定你的覆盖图应该被更新),在overlayView上调用上面的方法之一将导致它在地图上重新渲染那个点(即再次调用-canDrawMapRect:zoomScale:,如果前者返回YES,那么-drawMapRect:zoomScale:inContext:将被调用)。
更新:
如果您不确定需要重新渲染什么mapRect,您可以使用MKMapRectWorld常量作为mapRect -我相信这会导致整个地图上的覆盖重新加载(一旦可见)。
发布于 2013-09-12 08:33:49
使用MKAnnotations。您可以更改它们的坐标。只需禁用任何与触摸相关的内容。您需要自己的绘图代码来绘制注释,OpenGL可能会完成此任务。没有人会知道其中的区别。
发布于 2017-02-17 08:51:38
这似乎会强制地图刷新覆盖。也可能是注解。
self.mapView setCenterCoordinate:self.mapView.centerCoordinate;
https://stackoverflow.com/questions/3307316
复制相似问题