Custom annotation pin changes to default red pin at long tap.
- (MKAnnotationView *) mapView:(MKMapView *)mapingView viewForAnnotation:(id <MKAnnotation>) annotation {
MKPinAnnotationView *annView = nil;
if(annotation != mapingView.userLocation)
{
static NSString *defaultPinID = kDEFAULTPINID;
annView = (MKPinAnnotationView *)[mapingView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( annView == nil )
annView = [[MKPinAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:defaultPinID] ;
annView.canShowCallout = YES;
annView.image = [UIImage imageNamed:@"icon.png"];//sets image for default pin
}
return annView;
}
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKPinAnnotationView *)view
{
if ([[view.annotation title] isEqualToString:@"AnnotationTitle"] ) {
view.image = [UIImage imageNamed:@"selected_IconImage.png"];
}
}
Just touching the annotation pin the selected image appears.
But on long tap on the pin custom image reverts to default red pin.
How to fix this issue?
Use an
MKAnnotationViewinstead of anMKPinAnnotationView, I’m guessing the map view performs some sort of reset, which goes back to the default image (which is the pin image you see)