I am adding 2 annotations in mapview with leftcalloutaccessoryview (with an image) and rightcalloutacessoryview (with detail disclosure button). The problem is that it is working fine but only for one annotation, not for both. It shows one annotation with image and detail disclosure button that can be tapped while second annotation shows only title, no image and no detail disclosure button and it can not be tapped. Here is my code.
-(void)viewDidLoad{
[super viewDidLoad];
myLocationManager=[[CLLocationManager alloc] init];
geocoder = [[CLGeocoder alloc] init];
myLocationManager.delegate=self;
myLocationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
myLocationManager.distanceFilter=10.0;
[myLocationManager startUpdatingLocation];
mapView = [[MKMapView alloc]initWithFrame:
CGRectMake(10, 255, 300, 205)];
mapView.delegate = self;
mapView.centerCoordinate = CLLocationCoordinate2DMake(37.32, -122.03);
mapView.mapType = MKMapTypeStandard;
[self startAddingAnnottaions];
[self.view addSubview:mapView];
}
//startAddingAnnotations now
-(void)startAddingAnnottaions{
//first annotation
CLLocationCoordinate2D location;
location.latitude = (double) 37.331768;
location.longitude = (double) -122.020039;
MapAnnotation *newAnnotation = [[MapAnnotation alloc]
initWithTitle:@"Apple Head quaters" subtitle:@"subtitle" andCoordinate:location];
[mapView addAnnotation:newAnnotation];
//second annotation
CLLocationCoordinate2D location2;
location2.latitude = (double) 37.35239;
location2.longitude = (double) -122.025919;
MapAnnotation *newAnnotation2 = [[MapAnnotation alloc]
initWithTitle:@"Test Annotation" subtitle:@"parse" andCoordinate:location2];
[mapView addAnnotation:newAnnotation2];
}
//didAddAnnotationViews
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
MKAnnotationView *annotationView = [views objectAtIndex:0];
id <MKAnnotation> mapPoint = [annotationView annotation];
annotationView.canShowCallout = YES;
annotationView.calloutOffset = CGPointMake(0, 32);
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
annotationView.rightCalloutAccessoryView = rightButton;
UIImageView *iconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"orageSquare.png"]];
annotationView.leftCalloutAccessoryView = iconView;
MKCoordinateRegion region;
region.center = [mapPoint coordinate];
MKCoordinateSpan span;
span.latitudeDelta = 0.0144927536; // 0.0144927536 is equivalent to 1 mile
span.longitudeDelta = 0.0144927536;
region.span = span;
[mv setRegion:region animated:YES];
[mv selectAnnotation:mapPoint animated:YES];
}
//callout Accessory Control Tapped
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
id <MKAnnotation> annotation = [view annotation];
NSLog(@"Right Button Pressed");
[self performSegueWithIdentifier:@"mapToOtherInfo" sender:self];
}
What am I doing wrong? It should show multiple annotations with image and detail disclosure button. Why is it showing only one annotation with them? sometimes first one works fine, sometimes second one does but both don't work fine together.