Goupilles personnalisées iOS MapKit

Comment puis-je montrer des images au lieu d'épingles sur la carte? Jusqu'à présent, je peux seulement append des épingles à la pression. Un exemple de code du .m serait extrêmement utile puisque je suis encore nouveau à la programmation iOS.

    #pragma mark - #pragma mark MKMapView delegate - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSSsortingng* AnnotationIdentifier = @"AnnotationIdentifier"; MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; if(annotationView) return annotationView; else { MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; annotationView.canShowCallout = YES; annotationView.image = [UIImage imageNamed:@"someImage.png"]; UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside]; [rightButton setTitle:annotation.title forState:UIControlStateNormal]; annotationView.rightCalloutAccessoryView = rightButton; annotationView.canShowCallout = YES; annotationView.draggable = YES; return annotationView; } return nil; } 

    MODIFIER:

    Je pourrais vous expliquer tout sur le MKAnnotationView , mais je pense que vous findez la documentation fournie par Apple pour être une meilleure explication que de toute autre source. Vérifiez la section d'aperçu dans le lien.

    https://developer.apple.com/documentation/mapkit/mkannotationview

    Aller à l'organisateur de Xcode, puis aller à la documentation et la search weathermap, il montre un exemple pour la carte avec inclure des images à l'annotation.

     #pragma mark - #pragma mark MKMapView delegate -(void)addAllPinsOnMapView { MKCoordinateRegion region = mapViewOffer.region; region.center = CLLocationCoordinate2DMake(12.9752297537231, 80.2313079833984); region.span.longitudeDelta= 0.1f; region.span.latitudeDelta= 0.1f; [mapViewOffer setRegion:region animated:YES]; mapViewOffer.delegate=self; arrMapPin=[[NSMutableArray alloc] init]; NSArray *name=[[NSArray alloc]initWithObjects: @"Title1", @"Title2", @"Title3", nil]; NSMutableArray *arrCoordinateStr = [[NSMutableArray alloc] initWithCapacity:name.count]; [arrCoordinateStr addObject:@"12.970760345459,80.2190093994141"]; [arrCoordinateStr addObject:@"12.9752297537231,80.2313079833984"]; [arrCoordinateStr addObject:@"12.9788103103638,80.2412414550781"]; for(int i = 0; i < name.count; i++) { NSArray *components = [[arrCoordinateStr objectAtIndex:i] componentsSeparatedBySsortingng:@","]; double latitude = [components[0] doubleValue]; double longitude = [components[1] doubleValue]; MKPointAnnotation *mapPin = [[MKPointAnnotation alloc] init]; CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude); mapPin.title = [name objectAtIndex:i]; mapPin.coordinate = coordinate; [mapViewOffer addAnnotation:mapPin]; } } - (void)mapView:(MKMapView *)mapView didSelectAnnotationView: (MKAnnotationView *)view { NSLog(@"%@",view.annotation.title); NSLog(@"%f",view.annotation.coordinate.latitude); NSLog(@"%f",view.annotation.coordinate.longitude); UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(calloutTapped:)]; [view addGestureRecognizer:tapGesture]; } -(void)calloutTapped:(UITapGestureRecognizer *) sender { NSLog(@"Callout was tapped"); MKAnnotationView *view = (MKAnnotationView*)sender.view; id <MKAnnotation> annotation = [view annotation]; if ([annotation isKindOfClass:[MKPointAnnotation class]]) { //[self performSegueWithIdentifier:@"annotationDetailSegue" sender:annotation]; OfferDetailsViewController *objOfferDetailsViewController = [[OfferDetailsViewController alloc]init]; [self.navigationController pushViewController:objOfferDetailsViewController animated:YES]; } } - (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation { MKAnnotationView *pinView = nil; static NSSsortingng *defaultPinID = @"annotationViewID"; pinView = (MKAnnotationView *)[mapViewOffer dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; if ( pinView == nil ){ pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID]; } pinView.canShowCallout = YES; pinView.image = [UIImage imageNamed:@"placeholder"]; UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; [infoButton addTarget:self action:@selector(infoButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; pinView.rightCalloutAccessoryView = infoButton; return pinView; }