如何停止viewForAnnotation方法覆盖iOS中的默认用户位置蓝色信标

现在,我使用注释填充地图视图,并显示用户的当前位置。 使用viewForAnnotation方法,它会覆盖所有注释与默认的红色别针,但我想返回其他注释的意见,但保持用户位置默认的蓝色信标。 有没有办法做到这一点,或者我必须创build一个新的注释视图,并返回正确的取决于注释?

现在我有这样的东西:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { if (annotation.coordinate == locationManager.location.coordinate) { return nil; }else { MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Beacon"]; // Button UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; button.frame = CGRectMake(0, 0, 23, 23); annotationView.rightCalloutAccessoryView = button; annotationView.canShowCallout = YES; return annotationView; } } 

但是我不能将两者等同起来,因为我无法从注解参数中获取坐标属性。

有人知道这个解决scheme吗?

看看这里的文档:

http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapViewDelegate_Protocol/MKMapViewDelegate/MKMapViewDelegate.html

正如它所述:

如果注释参数中的对象是MKUserLocation类的实例,则可以提供自定义视图来表示用户的位置。 要使用默认系统视图显示用户的位置,请返回nil。

所以你可以添加一个条件来检查这个:

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