iOS Ajouter une annotation de point / pin sur la carte


Exemple

Pour annoter un point d'intérêt sur la carte, nous utilisons l'annotation des broches. Maintenant, commencez par créer l'objet d'annotation en premier.

MKPointAnnotation *pointAnnotation = [[MKPointAnnotation alloc] init];

Maintenant, fournissez la coordonnée au pointAnnotation, comme

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(23.054625,72.534562);
pointAnnotation.coordinate = coordinate;

Maintenant, fournissez le titre et le sous-titre à l'annotation,

pointAnnotation.title = @"XYZ Point";
pointAnnotation.subtitle = @"Ahmedabad Area";

Maintenant, ajoutez cette annotation à la carte.

[self.mapView addAnnotation:pointAnnotation];

Yeaah .. Hourra .. vous avez fait le travail. Vous pouvez maintenant voir une annotation de point (broche de couleur rouge) à une coordonnée donnée.

Mais maintenant, que faire si vous voulez changer la couleur de la goupille (3 couleurs disponibles sont - Violet, rouge et vert). Suivez ensuite cette étape.

définir le délégué de mapview sur soi-même,

self.mapView.delegate = self;

Ajoutez l'implémentation de MKMapViewDelegate. Maintenant, ajoutez la méthode suivante,

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    // If it's the user location, just return nil, because it have user location's own annotation, if you want to change that, then use this object;
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    if ([annotation isKindOfClass:[MKPointAnnotation class]])
    {
        //Use dequed pin if available
        MKAnnotationView *pinView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"PinAnnotationView"];
    
        if (!pinView)
        {
            // If not dequed, then create new.
            pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"PinAnnotationView"];
            pinView.canShowCallout = YES;
            pinView.image = [UIImage imageNamed:@"abc.png"];
            pinView.calloutOffset = CGPointMake(0, 32);
        } else {
            pinView.annotation = annotation;
        }
        return pinView;
    }
    return nil;
}