在Xcode中自定义地图叠加层

时间:2012-09-25 08:13:51

标签: ios xcode mkmapview overlay customization

我有一个带2个圆圈的mapView。当我尝试定制大的那个时,小的似乎跟随大的那个。例如,如果我自定义大的填充颜色,则较小的填充颜色将获得相同的颜色。如何使较小的颜色变成不同的颜色?注意:我使用可重用的标识符。谢谢..这是我的工作代码,但是当我尝试编辑我的小圆圈时,半径为100的圆圈却没有。注意:这是我的工作代码,因为我试过它失败了。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay {
static NSString *CircleOverlayIdentifier = @"Circle";

_mapView.delegate = self;

if ([overlay isKindOfClass:[CircleOverlay class]]) {
    CircleOverlay *circleOverlay = (CircleOverlay *)overlay;

    MKCircleView *annotationView =
    (MKCircleView *)[mapView dequeueReusableAnnotationViewWithIdentifier:CircleOverlayIdentifier];

    if (!annotationView) {
        MKCircle *circle = [MKCircle
                            circleWithCenterCoordinate:circleOverlay.coordinate
                            radius:circleOverlay.radius];
        annotationView = [[MKCircleView alloc] initWithCircle:circle];
        //this one

    }


    if (overlay == self.targetOverlay) {
        //adjustable
        annotationView.fillColor = [UIColor colorWithRed:1.0f green:0.0f blue:0.0f alpha:0.3f];
        annotationView.strokeColor = [UIColor redColor];
        annotationView.lineWidth = 1.0f;
    } else {
        //fixed
        annotationView.fillColor = [UIColor colorWithWhite:0.3f alpha:0.3f];
        annotationView.strokeColor = [UIColor purpleColor];
        annotationView.lineWidth = 2.0f;


    }

    return annotationView;
}

return nil;
}

- (void)configureOverlay {
if (self.location) {
    [self.mapView removeAnnotations:[self.mapView annotations]];        
    [self.mapView removeOverlays:[self.mapView overlays]];


    CircleOverlay *overlaysmall = [[CircleOverlay alloc] initWithCoordinate:self.location.coordinate radius:100];
    [self.mapView addOverlay:overlaysmall];

    _targetOverlaySmall = overlaysmall;

    CircleOverlay *overlay = [[CircleOverlay alloc] initWithCoordinate:self.location.coordinate radius:self.radius];
    [self.mapView addOverlay:overlay];

    GeoQueryAnnotation *annotation = [[GeoQueryAnnotation alloc] initWithCoordinate:self.location.coordinate radius:self.radius];
    [self.mapView addAnnotation:annotation];

    [self updateLocations];
    }
}

0 个答案:

没有答案