2017-08-24 98 views
0

我想创建自定义注释,因为每个注释保存一些数据,我需要显示在引脚上。但我需要显示默认的ios引脚图像。一切工作正常,但引脚只会显示当我设置任何图像。没有设置图像,它不显示默认的ios引脚。我的代码是
CustomAnnotation.h在viewForAnnotationMKMapViewDelegate方法文件自定义注释没有出现没有设置图像

@interface CustomAnnotation : NSObject<MKAnnotation> 
    @property(nonatomic,strong)NSString *title; 
    @property(nonatomic,strong)NSString *subTitle; 
    @property(nonatomic)CLLocationCoordinate2D coordinate; 
    @property(nonatomic,strong) UserDevice *userData; 
    -(instancetype)initWithUserData:(UserDevice *)userData; 

上mapViewC.h

-(void)addMarkersOnMap{ 
for (UserDevice* userDevice in markersArray) { 
    CustomAnnotation *point = [[CustomAnnotation alloc]initWithUserData:userDevice]; 
    point.coordinate = CLLocationCoordinate2DMake(userDevice.latitude, userDevice.longitude); 
    point.userData = userDevice; 
    point.title = @"dszf"; 
    [mapview addAnnotation:point];  
    MKMapRect mapRect = [self getZoomingRectOnMap:mapview toFitAllOverlays:YES andAnnotations:YES includeUserLocation:NO]; 
    [mapview setVisibleMapRect:mapRect edgePadding:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0) animated:YES]; 
} 

} 
#pragma mark - MKMapView Delegate methods 

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 
if ([annotation isKindOfClass:[MKUserLocation class]]) { 
    return nil; 
} 
if ([annotation isKindOfClass:[CustomAnnotation class]]) { 
    CustomAnnotation *customAnnotation = annotation; 
    MKAnnotationView *customAnnotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"annotationViewID"]; 
    if (customAnnotationView == nil){ 
     customAnnotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotationViewID"]; 
    } 
    //  customAnnotationView.image = [UIImage imageNamed:@"pin-1"]; 
    customAnnotationView.canShowCallout = true; 
    customAnnotationView.annotation = customAnnotation; 
    return customAnnotationView; 
} 
return nil; 
} 
+0

针对地图,你必须使用MKPinAnnotation –

回答

0

代替CustomAnnotationView使用MKPinAnnotationView

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 
    if ([annotation isKindOfClass:[MKUserLocation class]]) { 
     return nil; 
    } 
    if ([annotation isKindOfClass:[CustomAnnotation class]]) { 
     CustomAnnotation *customAnnotation = annotation; 
     MKPinAnnotationView *customAnnotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"annotationViewID"]; 
     if (customAnnotationView == nil){ 
      customAnnotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotationViewID"]; 
     } 
     //  customAnnotationView.image = [UIImage imageNamed:@"pin-1"]; 
     customAnnotationView.canShowCallout = true; 
     customAnnotationView.annotation = customAnnotation; 
     return customAnnotationView; 
    } 
    return nil; 
} 

希望这有助于

0
CustomAnnotation *customAnnotation = annotation; 
    NSString *annotationIdentifier = @"PinViewAnnotation"; 
    MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier: annotationIdentifier]; 

    if (pinView ==nil) { 
     pinView = [[MKPinAnnotationView alloc]initWithAnnotation: customAnnotation reuseIdentifier: annotationIdentifier]; 

    } 
    pinView.pinColor = MKPinAnnotationColorGreen; // change color 
    pinView.canShowCallout = YES; 
    pinView.enabled = YES; 
    mapView selectAnnotation:pinView animated:YES];