这是我的-mapView:viewForAnnotation
方法,在创建注释视图时会丢弃引脚。但是当我在mapView.showsUserLocation = YES;
中设置-viewDidLoad
时,我会在无限循环上放置一个引脚(预期 - 在模拟器中),而不是正常的蓝点。
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKAnnotationView *anno = nil;
//create a pin annotation view
MKPinAnnotationView *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];
[pin setPinColor:MKPinAnnotationColorRed];
pin.animatesDrop=YES;
pin.canShowCallout = YES;
pin.calloutOffset = CGPointMake(-5, 5);
anno = pin;
return anno;
}
我怎样才能让它掉针并显示蓝点?
由于
答案 0 :(得分:24)
修复起来非常简单,虽然不确定这是否是正确的方法......
if (annotation == mapView.userLocation){
return nil; //default to blue dot
}
答案 1 :(得分:0)
与其他答案类似,这里有一些结论:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)];
if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0)
return nil;
...
}
当然,使用这样的东西需要您自担风险。如果Apple决定更改该名称,它可能会在明天停止工作。
答案 2 :(得分:0)
通常使用自己的注释类来查找与注释相关的信息。在这种情况下,要仅处理您自己的注释,请使用类似
的内容if ([annotation isKindOfClass:[MapLocation class]]) {}