whatwg standard living ios mapkit

standard - iOS MapKit pines personalizados



w3c (3)

¿Cómo muestro imágenes en lugar de pins en el mapa? Hasta el momento solo puedo añadir alfileres de barril. Un código de ejemplo de .m sería de gran ayuda ya que todavía soy nuevo en la programación de iOS.


Vaya al organizador de Xcode y luego vaya a la documentación y busque en weatherMap. Muestra un mapa para incluir imágenes en la anotación.


#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] componentsSeparatedByString:@","]; 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 NSString *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; }


#pragma mark - #pragma mark MKMapView delegate - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) return nil; static NSString* 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; }

EDITAR:

Podría explicarle todo acerca de MKAnnotationView , pero creo que encontrará que la documentación proporcionada por Apple es una explicación mucho mejor que de cualquier otra fuente. Consulte la sección de información general en el enlace.

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