2009-09-29 8 views
6

Est-il possible d'avoir notre propre image au lieu de la broche par défaut dans la carte MapKit sur iPhone?Image au lieu de la broche par défaut dans le cadre MapKit de l'iPhone?

Je suis en train de travailler sur une application qui montrerait des emplacements d'amis comme Google Latitude et qui aurait besoin de montrer l'image d'amis à leurs emplacements.

Il est possible d'utiliser le JavaScript Google Map, mais je veux savoir si quelqu'un peut donner un exemple de code pour la carte MapKit.

Répondre

14

Oui, c'est possible. Pour cela, vous devez utiliser MKAnnotationView au lieu de MKPinAnnotationView. et n'utilisez pas la propriété annotation.animatesDrop.

Voici l'exemple de code que vous pouvez utiliser dans viewForAnnotation,

annotation = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"try"]; 
    annotation.canShowCallout = YES; 

    annotation.image = [UIImage imageNamed:@"image.png"]; 


    return annotation; 
+0

Merci. Il a fait l'affaire. Ne peux pas croire que je cudnt comprendre un tel tour simple. –

2

Vous pouvez également définir le cadre de l'image. Pour cela dans le code ci-dessus, nous devons faire ces changements simples.

UIImage *pinImage = [UIImage imageNamed:@"image.png"]; 

UIImageView *imageView = [[[UIImageView alloc] initWithImage:pinImage] autorelease]; 

     imageView.frame = CGRectMake(-20, 0, 40, 30); 

[annotation addSubview:imageView]; 

Et nous devons commenter la ligne

// annotation.image = [UIImage imageNamed:@"image.png"]; 
0

En utilisant la propriété span, vous pouvez facilement zoomer sur votre besoin

durée MKCoordinateSpan;

MKCoordinateRegion region; 


mapView.scrollEnabled=YES; 
span.latitudeDelta = 100.0;//more value you set your zoom level will increase 
span.longitudeDelta =100.0;//more value you set your zoom level will increase 
mapView.showsUserLocation=YES; 
region.span = span; 


region.center = from.coordinate; 
    [mapView setRegion:region animated:YES]; 
[mapView regionThatFits:region]; 
[mapView addAnnotation:from];