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 に答える