2010-12-14 3 views
0

Je suis actuellement en utilisant le code suivant:Allant de Google Maps pour iOS MapKit sur

UIApplication *app = [UIApplication sharedApplication]; 
[app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=Current%20Location&daddr=Chicago"]]; 

Il fonctionne parfaitement bien pour ouvrir les directions dans les cartes Google App. Si je voulais faire exactement la même chose, seulement dans l'application elle-même, comment le ferais-je? J'ai actuellement un viewController mis en place qui a une instance de MKMapView, mais il montre le monde entier. Tout fonctionne correctement, mais dès que j'essaie de lire la documentation Apple sur les annotations, ma tête commence à tourner.

Répondre

1

La partie des annotations est raisonnablement simple une fois que vous avez enroulé la tête autour de celle-ci, mais que la partie de dessin de tracé est un véritable problème. Je le fais en one of my apps et il a fallu beaucoup de travail pour ne pas dessiner les lignes et les garder à l'échelle, mais surtout le faire de manière rapide et efficace en mémoire si l'utilisateur spécifie une route qui a littéralement des centaines d'étapes (cross-country en évitant les autoroutes, par exemple).

À moins que le routage ne soit au centre de votre application, je ne m'en soucierais pas. Si vous voulez vraiment vraiment, je vais revenir en arrière et passer en revue le code et fournir quelques indications. Juste être prévenu qu'il y a étonnamment beaucoup à cela.

0

Je vais supposer que vous recherchez une adresse et que vous l'affichez dans votre application. Vous pouvez utiliser le Geocoder API pour effectuer une recherche avec des limites (ou sans). J'utilise ce format NSString: NSString *geocoderURLFormat = @"http://maps.googleapis.com/maps/api/geocode/json?address=%@&bounds=%@&sensor=true". Le rappel de cet appel renverra une fenêtre d'affichage suggérée pour l'emplacement - sud-ouest et nord-est/long. En utilisant ces derniers, vous pouvez définir la région de l'objet MKMapView comme ceci:

CLLocationCoordinate2D coord; 
coord.latitude = location.latitude; 
coord.longitude = location.longitude; 

MKCoordinateSpan span; 
span.latitudeDelta = location.swLatitude > location.neLatitude ? location.swLatitude - location.neLatitude : location.neLatitude - location.swLatitude; 
span.longitudeDelta = location.swLongitude > location.neLongitude ? location.swLongitude - location.neLongitude : location.neLongitude - location.swLongitude; 

MKCoordinateRegion region; 
region.span = span; 
region.center = coord; 

[mapView setRegion:region animated:YES]; 

Notez que je suis encore un peu flou sur les valeurs latitudeDelta et longitudeDelta de MKCoordinateSpan, d'où la laideur du code. Et la variable location que j'utilise est construite à partir des résultats de l'appel à Geocoder.

Espérons que cela aide!