Ios 更改MKOverlayView的MKOverlay坐标

Ios 更改MKOverlayView的MKOverlay坐标,ios,ios5,mkmapview,mkoverlay,Ios,Ios5,Mkmapview,Mkoverlay,我在地图上有一个覆盖图,我想改变它的坐标。为了无缝地执行此操作,我将在对视图进行更改后调用该方法 我通过改变填充颜色测试了这一点,效果很好: overlayView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.3]; [overlayView setNeedsDisplayInMapRect:mapView.visibleMapRect]; 然而,我似乎碰到了一堵砖墙,试图同时更改叠加视图(它是带有的)的中心坐标。这里

我在地图上有一个覆盖图,我想改变它的坐标。为了无缝地执行此操作,我将在对视图进行更改后调用该方法

我通过改变填充颜色测试了这一点,效果很好:

overlayView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.3];
[overlayView setNeedsDisplayInMapRect:mapView.visibleMapRect];
然而,我似乎碰到了一堵砖墙,试图同时更改叠加视图(它是带有的)的中心坐标。这里面有一个方法 ,这是MKCircle符合的,叫做-这似乎是我需要的。不幸的是,MKCircleView中的
圆圈
属性是只读的。此外,中的
overlay
属性也是只读的


实际上有没有一种方法可以更改覆盖图的坐标,而不必删除覆盖图视图并添加一个新视图(这会在屏幕上引起非常明显的闪烁。)?

同样的问题也发生在这里,所以我创建了一组方法,并根据需要调用它

-(void)removeAllAnnotationFromMapView{
    if ([[self.tmpMapView annotations] count]) {
        [self.tmpMapView removeAnnotations:[self.tmpMapView annotations]];
    }
}
-(void)removeAllOverlays{
    if ([[self.tmpMapView overlays] count]) {
        [self.tmpMapView removeOverlays:[self.tmpMapView overlays]];
    }
}

-(void)removeOverlayWithTag:(int)tagValue{
    for (MKOverlayView *oView in [self.tmpMapView overlays]) {
        if (oView.tag == tagValue) {
            [self.tmpMapView removeOverlay:oView];
        }
    }
}

我在查看多段线时遇到了类似的问题。在我的例子中,直线总是变长,所以我总是画两条多段线,然后删除旧的一条。通过这种方式,较长的线隐藏了闪烁。我也在尝试实现同样的效果。在我的例子中,我有自定义MKOverLay,并希望在地图上设置动画。