2

大家好......我知道这是一个重复的问题,但我仍然无法让它工作,我确定我错过了一些简单的东西。我已经在 IB 中设置了委托,并且调用了 RegionDidChange,所以我知道 mapView 委托已连接。但是我无法显示任何覆盖,甚至无法调用委托方法。这是代码:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

self.map.region = MKCoordinateRegionMakeWithDistance(
                                                    newLocation.coordinate, 
                                                    milesToMeters(radius),
                                                    milesToMeters(radius)
                                                    );
self.map.centerCoordinate = newLocation.coordinate;
circle = [MKCircle circleWithCenterCoordinate:newLocation.coordinate radius:50.];    

[self.map addOverlay:circle];
[locationManager stopUpdatingLocation];   

}

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {

NSLog(@"region did change");
}

- (MKOverlayView *)map:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay {
NSLog(@"circling");

if ([overlay isKindOfClass:[MKCirlce class]])

{
MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:overlay] autorelease];
circleView.lineWidth = 1.0;
circleView.strokeColor = [UIColor redColor];

return circleView;
}
return nil;

}

非常感谢。朱尔斯

4

1 回答 1

1

viewForOverlay委托方法未正确命名。它应该是:

- (MKOverlayView *)mapView:(MKMapView *)map 
            viewForOverlay:(id <MKOverlay>)overlay {

它必须被命名mapView:viewForOverlay:(不是map:viewForOverlay:)。

您可以更改内部参数名称,但不能更改方法名称。

此外,在您的viewForOverlay方法中,MKCirlce应该是MKCircle.

于 2011-05-24T14:28:27.240 回答