在 iPhone MKMapView 中显示用户位置蓝点
Posted
技术标签:
【中文标题】在 iPhone MKMapView 中显示用户位置蓝点【英文标题】:show users location blue point in iPhone MKMapView 【发布时间】:2011-08-30 00:27:09 【问题描述】:我正在我的 iPhone 应用程序的 MapView 中开发自定义图钉。 代码如下:
- (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 中的“显示用户位置”。 我想使用默认的蓝点,它会在用户移动时自动移动,对吗? 我该怎么做?
非常感谢。
【问题讨论】:
也可以看到***.com/a/68444109/9497800。 viewForAnnotation 方法顶部的代码只是if annotation is MKUserLocation return nil
for Swift 5
【参考方案1】:
将此添加到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
【讨论】:
效果很好,谢谢。唯一的就是显示用户位置的蓝点,在他周围做了一个很大的圆圈,是否可以自定义? 圆圈大小表示位置的准确程度(越小表示越准确)。不确定这是否可以使用 CLLocationManager 在 MKMapView 中进行控制。 好的谢谢。而且您知道如何通过代码手动引入用户位置。我需要将用户放在一个地方。谢谢 很遗憾,动画蓝点视图不适用于您自己的注释视图,并且您无法覆盖地图视图的用户位置坐标。您可以在某个位置创建自己的注释,但不能使其使用蓝点动画。您必须自己绘制或截取圆点并将其用作注释视图中的图像。以上是关于在 iPhone MKMapView 中显示用户位置蓝点的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 应用程序内的 MKMapView 中显示和连接多个位置与带有注释的路线?
userLocation 上的中心 MKMapView(最初) - 仅适用于 iPhone 4?