【问题标题】:How to force call rendererForOverlay如何强制调用 rendererForOverlay
【发布时间】:2015-01-11 22:09:19
【问题描述】:

我想用新的 fillColor (hotSpot[@"intensity"]) 刷新我的 MKOverlay。有没有办法强制调用 rendererForOverlay 方法?它只在地图加载时被调用一次。

-(MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id<MKOverlay>) overlay{
    MKPolygonRenderer *square;
    for(NSDictionary *hotSpot in hotSpots) {
        if([overlay.title containsString:hotSpot[@"id"]]) {
            square = [[MKPolygonRenderer alloc] initWithOverlay:overlay];
            square.fillColor = [[UIColor redColor] colorWithAlphaComponent:[hotSpot[@"intensity"] floatValue]];
        }
    }

    return square;
}

我尝试过但没有成功:

[map setNeedsDisplay];

[map setNeedsDisplayInRect:CGRectMake(0,0,map.layer.frame.size.width,map.layer.frame.size.height)];

MKCoordinateRegion region = map.region;
region.span.longitudeDelta /= 1.01;
region.span.latitudeDelta /= 1.01;
[map setRegion:region animated:TRUE];

【问题讨论】:

  • 而不是 setNeedsDisplay,试试这个:使用地图视图的 rendererForOverlay: 方法(不是委托方法)获取对覆盖层渲染器的引用并在其上调用 invalidatePath。

标签: ios mkoverlay mkpolygonrenderer


【解决方案1】:

您可以添加和删除相同的 MKOverlay 对象。这会强制调用 rendererForOverlay,即使您有相同的叠加层也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多