2010-07-21 2 views
2

Iam créant une application iphone, qui devrait prendre en latitude et longitudes à partir d'un tableau et devrait localiser et afficher la carte avec une annotation personnalisée/broches. Je l'ai utilisé la MapKit, voici comment:initialisation du mapkit avec une latitude et une longitude particulières Iphone

//MapViewController.h 

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 

@interface MapViewController : UIViewController <MKMapViewDelegate> { 
IBOutlet MKMapView *mapView; 
MKPlacemark *mPlacemark; 
} 

@property (nonatomic, retain) IBOutlet MKMapView *mapView; 
@end 


//MapViewController.m 

#import "MapViewController.h" 
#import <MapKit/MapKit.h> 

@implementation MapViewController 
@synthesize mapView; 


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CLLocationCoordinate2D location = mapView.userLocation.coordinate; 
    MKCoordinateRegion region; 
    MKCoordinateSpan span; 

    location.latitude = 37.250556; 
    location.longitude = -96.358333; 

    span.latitudeDelta = 0.05; 
    span.longitudeDelta = 0.05; 

    region.span = span; 
    region.center = location; 

    [mapView setRegion:region animated:YES]; 
    [mapView regionThatFits:region]; 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    [mapView setNeedsDisplay];  
} 


@end 

Ce ne trouve pas l'endroit pour la latitude et la longitude. S'il vous plaît aider.

+2

S'il vous plaît la prochaine fois formater votre code avant de poster (sélectionnez-le et cliquez sur le bouton '010101' sur la barre d'outils.N'incluez pas les parties de code qui ne sont évidemment pas nécessaires - il sera beaucoup plus facile pour les autres de vous aider – Vladimir

+0

va sûrement faire la prochaine fois ... – binbash

Répondre

1

J'ai fait un exemple de projet avec votre code et cela fonctionne bien - la carte est positionnée sur la région attendue (il semble). Vérifiez si votre Ivar MapView est initialisé (sont connexions établies correctement dans IB?)

Edit: Dans votre code visible de carte prise mais ne pas ajouter d'annotations à elle (à l'exception de montrer automatiquement la position de l'utilisateur courant est toujours à Cupertino si vous testez sur simulateur). Pour mettre la broche à vous associez vous devez créer un protocole objet confirmant MKAnnotation et l'ajouter à Mapview:

// Sample example just to show annotation 
// in your program you will likely need to use custom annotation objects 
CLLocation* myLocation = [[CLLocation alloc] initWithLatitude:37.250556 longitude:-96.358333]; 
[mapView addAnnotation:myLocation]; 

Certains commentaires (pas pertinente) sur votre code:

  • Vous n'avez pas besoin d'initialiser la variable d'emplacement avec l'emplacement actuel lorsque vous remplacez ses valeurs de coordonnées immédiatement après cela
  • Pourquoi appelez-vous [mapView setNeedsDisplay]; dans la méthode viewDidUnload? Je ne suis pas sûr si cela peut causer de sérieux problèmes mais vous devez utiliser cette méthode pour nettoyer la mémoire (par exemple relâcher les prises retenues), pas pour redessiner votre interface utilisateur.
+0

Eh bien, il affiche la carte avec la broche sur california, cupertino, qui est l'emplacement par défaut, mais les coordonnées que j'ai donné dans le code ci-dessus devrait l'épingler sur Kansas.J'ai enlevé l'initialisation et setNeedDisplay, mais il épingle le repère sur cupertino plutôt que le kansas – binbash

+0

Fait intéressant, je ne sais pas pourquoi votre extrait de code fonctionne. 'CLLocation' n'est pas réellement conforme à 'MKAnnotation' (mais cela fonctionne quand je lance ce code) – Nate

+0

@Nate, MKAnnotation proto col a seulement 1 méthode requise - 'coordination' et CLLocation a celui-là donc il n'y aura pas de problèmes en cours d'exécution bien que le compilateur le plus probable émettra un avertissement lorsque vous ajouterez CLLocation comme une annotation à mapview. Quoi qu'il en soit, c'était juste un exemple et dans la vraie vie, vous devriez utiliser des objets personnalisés conformes au protocole MKAnnotation – Vladimir

0

Avez-vous configuré votre carte pour suivre l'emplacement de l'utilisateur ailleurs? ? peut-être que cette valeur par défaut remplace votre mouvement manuel de la carte vers le Kansas.

modifier Do'h, n'a pas vu c'était Juillet l'année dernière. Eh bien peut-être que vous pourriez partager votre solution avec nous si ce n'était pas le problème

Questions connexes