MKMapView自定义UserLocation注释

Nim*_*od7 3 iphone mkmapview ipad ios

我希望自定义MKMapView userLocation注释,以绘制像官方地图应用程序一样的标题箭头.

我试图在viewForAnnotation中执行此操作:

 - (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
 {

    if ([annotation isKindOfClass:[MKUserLocation class]]) {

    }
 }
Run Code Online (Sandbox Code Playgroud)

但我无法找到接下来要做的事情来获取UserLocation的视图并自定义它.

非常感谢...

sam*_*tte 6

我创建了SVPulsingAnnotationView,一个可自定义的副本MKUserLocationView.

在此输入图像描述

你实例化它就像任何其他MKAnnotationView:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
    if([annotation isKindOfClass:[MyAnnotationClass class]]) {
        static NSString *identifier = @"currentLocation";
        SVPulsingAnnotationView *pulsingView = (SVPulsingAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

        if(pulsingView == nil) {
            pulsingView = [[SVPulsingAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
            pulsingView.annotationColor = [UIColor colorWithRed:0.678431 green:0 blue:0 alpha:1];
        }

        pulsingView.canShowCallout = YES;
        return pulsingView;
    }

    return nil;
}
Run Code Online (Sandbox Code Playgroud)


Ano*_*mie 5

默认用户位置标记的类(至少在SDK 4.2中)是MKUserLocationView,但这不是公共的,因此您无法创建要修改的实例而不会有来自应用商店的拒绝风险.您将不得不创建自己的MKAnnotationView(或MKAnnotationView的子类).