Comment faire pour Afficher Plusieurs Annotation dans MKMapView iOS?
je suis novice dans le Développement d'iOS, je veux vous Montrer plusieurs Annotation dans MKMapViewController dans iOS pour que j'écrive un code que dans ma méthode viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
self.mapView.delegate=self;
NSArray *name=[[NSArray alloc]initWithObjects:
@"VelaCherry",
@"Perungudi",
@"Tharamani", nil];
self.annotation=[[NSMutableArray alloc]initWithCapacity:[name count]];
MKPointAnnotation *mappin=[[MKPointAnnotation alloc]init];
CLLocationCoordinate2D location;
location.latitude=(double)12.970760345459;
location.longitude=(double)80.2190093994141;
mappin.coordinate=location;
mappin.title=[name objectAtIndex:0];
[self.annotation addObject:mappin];
location.latitude=(double)12.9752297537231;
location.longitude=(double)80.2313079833984;
mappin.coordinate=location;
mappin.title=[name objectAtIndex:1];
[self.annotation addObject:mappin];
location.latitude=(double)12.9788103103638;
location.longitude=(double)80.2412414550781;
mappin.title=[name objectAtIndex:2];
[self.annotation addObject:mappin];
[self.mapView addAnnotations:self.annotation];
self.mapView.mapType = MKMapTypeStandard;
self.mapView.showsUserLocation = YES;
}
Mais il n'est pas de l'annotation dans MKMapViewController merci de me donner la Solution pour cela.
Après
ici même.mapview est mon mapview que j'ai montré dans interface builder-je faire IBOutlet comme @property(nonatomic,retain)IBOutlet MKMapView *mapView; et l'autonomie.l'annotation est NSMuttable tableau qui contient la localisation, je veux mettre en mapview.
Ce n'
lors de l'impression d'après [self.mapView addAnnotations:auto.annotation] comme NSLog (@".annotation %d",[self.annotation count]); ensuite, elle les 3.
Est-ce que votre viewController conforme à la MKMapViewDelegate protocole ? Comme dans votre MKMapViewController.h fichier, avez-vous quelque chose comme:
[self.mapView addAnnotations:self.annotation]
ce n' self.annotation.count
retour? Avez-vous également init votre mapView ? Le code ci-dessus ne montre pas que vous avez appelé self.mapView = [[MapView alloc] init];
et vous n'avez pas mentionné si vous avez utilisé l'interface builder pour init votre mapView.ici même.mapview est mon mapview que j'ai montré dans interface builder-je faire IBOutlet comme @property(nonatomic,retain)IBOutlet MKMapView *mapView; et l'autonomie.l'annotation est NSMuttable tableau qui contient la localisation, je veux mettre en mapview.
Ce n'
self.annotation.count
de retour après avoir appelé [self.mapView addAnnotations:self.annotation]
?lors de l'impression d'après [self.mapView addAnnotations:auto.annotation] comme NSLog (@".annotation %d",[self.annotation count]); ensuite, elle les 3.
Est-ce que votre viewController conforme à la MKMapViewDelegate protocole ? Comme dans votre MKMapViewController.h fichier, avez-vous quelque chose comme:
@interface MKMapViewController : UIViewController <MKMapViewDelegate>
?OriginalL'auteur Ashish Gabani | 2014-11-27
Vous devez vous connecter pour publier un commentaire.
J'ai écrit une démo app ici qui vous montre une façon de rendre votre code un peu plus propre et réutilisable, en tenant compte de Paulw11 de sugggestion.
Remarque, cette méthode est purement fait avec le code, pas d'interface builder.
ViewController.h
ViewController.m
Si vous zoomez un peu, vous verrez tous les trois broches:
OriginalL'auteur Zhang
Vous devez utiliser la fonction
CLLocationCoordinate2DMake
à l'initialisation de votre emplacement des objets dans une seule ligne. Plus important encore, vous devez allouer un nouvel objet de l'annotation pour chaque annotation -location = CLLocationCoordinate2DMake(latitude, longitude)
est juste une pratique de l'initialiseur de laCLLocationCoordinate2D
struct ? J'ai testé la méthode à l'aide de l'initialiseur, et sans, à la fois semble fonctionner.De toute façon, sans allouer un nouveau MKPointAnnotation pour chaque annotation, vous n'allez pas obtenir 3 annotations, seul le dernier
Oui, c'est ce que j'ai remarqué après avoir écrit une démo app.
OK. J'ai vérifié aussi, et vous n'avez pas besoin d'utiliser CLLocationCoordinate2DMake, mais il est le plus propre approche (bien, aussi propre qu'à l'aide de données statiques dans un programme peut être)
merci de m'aider sur ce stackoverflow.com/questions/36330331/...
OriginalL'auteur Paulw11
OriginalL'auteur Phase Connection