gpt4 book ai didi

ios - viewForAnnotation 没有被解雇

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:04 27 4
gpt4 key购买 nike

我正在 map 上显示图钉,但无法自定义注释 View 的显示。出于某种原因,我的 viewForAnnotation 没有被调用。这是 didFinishLaunchingWithOptions 方法。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[mapView setDelegate:self];

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];

[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

[mapView setShowsUserLocation:YES];


// Override point for customization after application launch.
[self.window makeKeyAndVisible];
return YES;


}

这是我的 viewForAnnotation 方法,它从未被调用过。

- (MKAnnotationView *)mv:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

NSLog(@"viewForAnnotation");

if([annotation isKindOfClass:[MKUserLocation class]])
return nil;

static NSString *annotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];

[pinView setPinColor:MKPinAnnotationColorGreen];
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;

UIImageView *houseIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"house.png"]];
pinView.leftCalloutAccessoryView = houseIconView;
[houseIconView release];

return pinView;
}

这里是 didUpdateUserLocation 方法:

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation
{

NSTimeInterval t = [[[userLocation location] timestamp] timeIntervalSinceNow];

if(t < -180) return;

NSLog(@"%@",[textField text]);

MapPoint *mp = [[MapPoint alloc] initWithCoordinate:userLocation.location.coordinate title:[textField text]];



[mv addAnnotation:mp];
[mp release];

}

最佳答案

viewForAnnotation 委托(delegate)方法必须命名为 mapView:viewForAnnotation:

您的方法名为 mv:viewForAnnotation:

编辑:
以下是我的评论中建议的其他两个更改的示例:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSLog(@"viewForAnnotation");

if([annotation isKindOfClass:[MKUserLocation class]])
return nil;

static NSString *annotationIdentifier = @"AnnotationIdentifier";

MKPinAnnotationView *pinView = (MKPinAnnotationView *) [mapView
dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];

if (!pinView)
{
pinView = [[[MKPinAnnotationView alloc]
initWithAnnotation:annotation
reuseIdentifier:annotationIdentifier] autorelease];

[pinView setPinColor:MKPinAnnotationColorGreen];
pinView.animatesDrop = YES;
pinView.canShowCallout = YES;

UIImageView *houseIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"house.png"]];
pinView.leftCalloutAccessoryView = houseIconView;
[houseIconView release];
}
else
{
pinView.annotation = annotation;
}

return pinView;
}

关于ios - viewForAnnotation 没有被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com