如何强制调用rendererForOverlay

时间:2015-01-11 22:09:19

标签: ios mkoverlay mkpolygonrenderer

我想用新的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];

1 个答案:

答案 0 :(得分:3)

你可以添加&amp;删除相同的MKOverlay对象。这会强制调用rendererForOverlay,即使你有相同的叠加层。