在iPhone中显示用户位置蓝点MKMapView
问题描述:
我正在iPhone应用程序的MapView中开发自定义引脚。 下面是代码:在iPhone中显示用户位置蓝点MKMapView
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)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
它的作品好,thnks。其中最重要的是显示用户位置的蓝色点,在他周围形成一个非常大的圈,是否可以成本高昂? – ValentiGoClimb 2011-05-21 15:22:58
圆圈大小表示位置的精确度(更小意味着更准确)。不知道这是否可以使用CLLocationManager在MKMapView中进行控制。 – Anna 2011-05-21 16:15:24
好吧。而且您知道如何通过代码手动引入userlocation。我需要把用户放在一个地方。 throat – ValentiGoClimb 2011-05-22 18:10:12