Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS MapKit Changing mapview maptype causes annotation image to change to pin?

Any suggestions on what is wrong with the following would be appreciated.

I am adding a custom image to an annotation using the following code.

- (MKAnnotationView *)mapView:(MKMapView *)mapView 
            viewForAnnotation:(id <MKAnnotation>)annotation
{
    if ([annotation isMemberOfClass:[MKUserLocation class]]) 
    { 
        return nil; 
    } 


    if ([annotation isMemberOfClass:[SpectatorPin class]]) 
    { 
        SpectatorPin *sp = (SpectatorPin *)annotation;
        MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKPinAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
        view.image = [UIImage imageNamed:@"mylocation20x20.png"]; 
        view.canShowCallout = YES;
        view.annotation=annotation;
        return view;
    }

    //Should not get here
    return nil;

}

The image is displayed properly initially.

I have a segment control which changes the map type (standard, satellite, hybrid). Standard is the default. As soon as I select satellite the image immediately changes to a pin. The mapView:viewforAnnotation method is not called again.

Regards,

Jim

like image 754
jimsis Avatar asked Mar 01 '11 06:03

jimsis


2 Answers

For custom image, you might use MKAnnotationView instead of MKPinAnnotationView.

MKAnnotationView *view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@"specPin"];
        if (view == nil) {
            view = [[[MKAnnotationView alloc] initWithAnnotation:sp reuseIdentifier:@"specPin"] autorelease];
        }
like image 190
moon Avatar answered Sep 28 '22 00:09

moon


Found this: iPhone Core Location: Custom pin image disappears when map type changes

which linked to this: Why does a custom MKMapView annotation image disappear on touch?

like image 24
richy Avatar answered Sep 28 '22 00:09

richy