2013-06-17 6 views
-1

Je crée des annotations personnalisées pour l'affichage de la carte. Lorsque je place une épingle sur la carte montrant l'annotation avec 2 boutons. c'est un travail pour ios 6, mais quand je teste ce code dans ios 5, je ne vois aucune annotation.Annotation MapKit IOS 5 ne pas afficher

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

if ([annotation isKindOfClass:[MKUserLocation class]]) 
    return nil; //return nil to use default blue dot view 
NSLog(@"viewForAnnotation"); 
MKAnnotationView *annotationView = [[MKPinAnnotationView alloc] 

    initWithAnnotation:annotation reuseIdentifier:@"loc"]; 
annotationView.draggable = YES; 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

    [button setTitle:@"Добавить" forState:(UIControlStateNormal)]; 

button.frame = CGRectMake(0, 0, 76, 23); 
if (plased == YES){ 
    annotationView.rightCalloutAccessoryView = button; 
} 

[button addTarget:self action:@selector(fixPoint:) forControlEvents:(UIControlEventTouchUpInside)]; 


UIButton *buttonLeft = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[buttonLeft setTitle:@"Удалить" forState:(UIControlStateNormal)]; 
buttonLeft.frame = CGRectMake(0, 0, 66, 23); 
[buttonLeft addTarget:self action:@selector(cancelPoint:) forControlEvents:(UIControlEventTouchUpInside)]; 
if (plased == YES){ 
    annotationView.leftCalloutAccessoryView = buttonLeft; 
} 
annotationView.tag = [geoPointsList count]+1; 
annotationView.canShowCallout = YES; 

return annotationView; 
    } 

Répondre

0

Je mets ici Exemple simple pour Comment créer des AnnotationView.

Créez des AnnotationView:

#import <MapKit/MapKit.h> 

@interface AnnotationView : MKPlacemark 

@property (nonatomic, readwrite, assign) CLLocationCoordinate2D coordinate; 

@property (nonatomic, strong) NSString *title; 
@property (nonatomic, strong) NSString *subtitle; 

// you can put here any controllers that you want. (such like UIImage, UIView,...etc) 

@end 

Et .m file

#import "AnnotationView.h" 

@implementation AnnotationView 

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate addressDictionary:(NSDictionary *)addressDictionary 
{ 
    if ((self = [super initWithCoordinate:coordinate addressDictionary:addressDictionary])) 
    { 
     self.coordinate = coordinate; 
    } 
    return self; 
} 

@end 

// Utilisation Annotation Ajouter #import "AnnotationView.h" dans votre .m file concerné:

CLLocationCoordinate2D pCoordinate ; 
pCoordinate.latitude = LatValue; 
pCoordinate.longitude = LanValue; 

// Create Obj Of AnnotationView class 

AnnotationView *annotation = [[AnnotationView alloc] initWithCoordinate:pCoordinate addressDictionary:nil] ; 

    annotation.title = @"I m Here"; 
    annotation.subtitle = @"This is Sub Tiitle"; 

[self.mapView addAnnotation:annotation];