在iPhone MKMapView中显示用户位置蓝点

我正在我的iPhone应用程序中的MapView中开发自定义引脚。 这是代码:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation { static NSString *AnnotationViewID = @"annotationViewID"; MKAnnotationView *annotationView = (MKAnnotationView *)[myMapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; if (annotationView == nil) { annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease]; } if ([[annotation title] isEqualToString:NSLocalizedString(@"Current Location",@"")]) { MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease]; //pin.pinColor = MKPinAnnotationColorRed; annotationView = pin; } else { NSString *pin = [NSString stringWithFormat:@"pin%i.png",[[annotation imgNumber] intValue]]; annotationView.image = [UIImage imageNamed:pin];//Canviar la chincheta per numero UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [annotationView setRightCalloutAccessoryView:button]; annotationView.annotation = annotation; annotationView.canShowCallout = YES; /********* Imagen a la izquierda en la burbuja *********/ annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; // Set up the Left callout UIButton *myDetailButton = [UIButton buttonWithType:UIButtonTypeCustom]; myDetailButton.frame = CGRectMake(0, 0, 23, 23); myDetailButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; myDetailButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter; // Set the image for the button //[myDetailButton setImage:[UIImage imageNamed:@"botocorreu.png"] forState:UIControlStateNormal]; NSString *detailButton = [NSString stringWithFormat:@"%i",[[annotation imgNumber] intValue]]; [myDetailButton setImage:[UIImage imageNamed:detailButton] forState:UIControlStateNormal]; // Set the button as the callout view annotationView.leftCalloutAccessoryView = myDetailButton; annotationView.canShowCallout = YES; } return annotationView; } 

这很好但是用红色针脚向我显示用户位置。 我检查IB中的“显示用户位置”。 我想使用默认的蓝点,当用户移动时会自动移动它,是不是正确的? 我怎样才能做到这一点?

非常感谢。

将其添加到viewForAnnotation方法的顶部

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

特殊用户位置注释的类型为MKUserLocation ,在这种情况下返回nil告诉地图视图为其绘制默认视图,即蓝点。

您也可以删除这些行,因为它们将不再需要:

 if ([[annotation title] isEqualToString:NSLocalizedString(@"Current Location",@"")]) { MKPinAnnotationView *pin = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease]; //pin.pinColor = MKPinAnnotationColorRed; annotationView = pin; } else