2010-11-26 31 views
0

Je suis ce tutoriel (http://icodeblog.com/2009/12/21/introduction-to-mapkit-in-iphone-os-3-0/) sur l'ajout de mapkit et d'annotations à une application. Cependant, je suis sérieusement aux prises avec l'emplacement de l'utilisateur. Je suis nouveau sur xcode donc je ne sais pas trop quoi faire ensuite. J'ai essayé l'option de Tony:Essayer de montrer l'emplacement de l'utilisateur sur Mapkit, la chose la plus ennuyante qui soit. Quelqu'un donne un coup de main?

step one: add the CoreLocation framework to the project. 

Step two: add this function to the iCodeMapViewController.m: 


- (void)setCurrentLocation:(CLLocation *)location { 
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; 
region.center = location.coordinate; 
region.span.longitudeDelta = 0.15f; 
region.span.latitudeDelta = 0.15f; 
[self.mapView setRegion:region animated:YES]; 
} 

step three: add this code to the ViewForAnnotation Method: 


if (annotation != mapView.userLocation) { 
//the rest of the ViewForAnnotation code goes here 
}else{ 
CLLocation *location = [[CLLocation alloc] 
initWithLatitude:annotation.coordinate.latitude 
longitude:annotation.coordinate.longitude]; 
[self setCurrentLocation:location]; 
} 

Mais quand je vais construire, il ne l'aime pas.

J'ai aussi essayé cette option:

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation 
{ 
if ([annotation isKindOfClass:MKUserLocation.class]) return nil; 
     //rest of code 
} 

Les spectacles de point bleu, mes annotations personnalisées montrent mais les application se bloque lorsque je tente de faire défiler la table. Le débogueur ne donne aucune aide mais s'arrête sur cette déclaration.

Quelqu'un peut-il m'aider s'il vous plaît? Avec des exemples de code aussi? Je pense que la réponse à ce post pourrait être utile à un certain nombre de personnes qui luttent aussi avec le mapkit.

Vive

+2

Il n'y a pas de code ici lié au défilement d'une table ... mais la question indique que l'application se bloque lorsque vous faites défiler une table. –

Répondre

1

J'ai eu le même problème, mais j'ai réussi à le résoudre. En cellForRowAtIndexPath Je l'ai fait:


NSMutableArray *annotations = [[NSMutableArray alloc] init]; 
    if(indexPath.section == 0) 
    { 
     for(MinuAsukohad *annotation in [mapView annotations]) 
     { 
      if(![annotation isKindOfClass:[MKUserLocation class]]) 
      { 
      if([annotation annotationType] == MinuAsukohadTypeInterest) 
       { 
       [annotations addObject:annotation]; 
       } 
      } 
     } 
     cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title]; 
    } 

Il vous suffit de le répéter pour toutes les sections.

+0

légende absolue! Merci beaucoup mon pote. – Jon

0

On dirait que vous essayez d'inclure votre position actuelle comme l'une des cellules de la table ... regardez votre console et nous donnent la sortie lorsque l'accident se produit.

+0

*** Application terminaison due à l'exception non interceptée 'NSInvalidArgumentException', raison: '- [MKUserLocation annotationType]: sélecteur non reconnu envoyé à l'instance 0x6d26af0' – Jon