Puis-je créer un MKAnnotation
ou est-il en lecture seule? J'ai des coordonnées, mais je ne trouve pas facile de créer manuellement un MKAnnotation
en utilisant setCoordinate
.iPhone: Créer MKAnnotation
Des idées?
Puis-je créer un MKAnnotation
ou est-il en lecture seule? J'ai des coordonnées, mais je ne trouve pas facile de créer manuellement un MKAnnotation
en utilisant setCoordinate
.iPhone: Créer MKAnnotation
Des idées?
MKAnnotation est un protocole. Vous devez donc écrire votre propre objet d'annotation qui implémente ce protocole. Ainsi, votre tête de MyAnnotation ressemble:
@interface MyAnnotation : NSObject<MKAnnotation> {
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
// add an init method so you can set the coordinate property on startup
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord;
et votre implémentation ressemble (MyAnnotation.m):
- (id) initWithCoordinate:(CLLocationCoordinate2D)coord
{
coordinate = coord;
return self;
}
Donc, pour ajouter votre annotation à la carte:
MyAnnotation * annotation = [[[MyAnnotation alloc] initWithCoordinate:coordinate] autorelease];
[self.mapView addAnnotation:annotation];
Si vous wan't un titre et sous-titre sur la légende d'annotation, vous devez ajouter les propriétés de titre et de sous-titre.
Vérifiez le projet Apple MapCallouts. Tout ce dont vous avez besoin est dans ce fichier: http://developer.apple.com/iphone/library/samplecode/MapCallouts/Introduction/Intro.html
Ta toujours tellement, juste ce que je cherchais. –
Dans iPhone OS 4, il existe une nouvelle classe MKPointAnnotation qui est une implémentation concrète du protocole MKAnnotation.
Merci d'avoir signalé cela joshrl –
Ceci est super pratique si vous avez seulement besoin d'annotations de base. Merci! – radven
MKPointAnnotation * pointAnnotation = [[MKPointAnnotation alloc] init]; pointAnnotation.coordinate = location.coordinate; [mkMapView addAnnotation: pointAnnotation]; –
C'est exactement ce dont j'avais besoin. Où devrais-je mettre le - (id) initWithCoordinate: (CLLocationCoordinate2D) coord; méthode? Dans mon fichier .h ou .m? –
Pas de problème. J'ai mis à jour la réponse avec plus de détails :) – RedBlueThing
Pour une raison quelconque, je n'ai pas de méthode '-initWithCoord:' trouvée quand j'essaie de construire et de lancer. –