Si vous voulez donner à vos utilisateurs un itinéraire en lançant l'application Maps, c'est en fait assez facile. Vous créez simplement un URL Google Maps régulière et l'utilisation UIApplication de l'ouvrir; Votre téléphone reconnaît que l'URL est pour les directions et sera ouverte Maps.app plutôt que Safari.app automatiquement.
Le format d'URL est très facile pour les directions:
http://maps.google.com/maps?saddr = [adresse de la source ou les coordonnées] & daddr = [adresse de destination ou de coordonnées]
Voici un exemple de prendre les coordonnées extraites de Core Location, et s'en servir comme point de départ pour les directions:
Bien sûr, ce faisant cela s'arrête et lance votre application Maps.app, alors assurez-vous que vous avez tout sauvegardé avant de le faire.
Il ya un gotcha si vous utilisez des termes de recherche ou d'une adresse physique au lieu de coordonnées. Maps.app n'aime pas les espaces. Contrairement à Safari, Maps.app ne convertira pas automatiquement les espaces à 20% pour vous. D'autre part, vous ne voulez pas utiliser stringByAddingPercentEscapesUsingEncoding NSString: soit, parce que cette méthode permet de convertir les virgules, tirets, et certains autres personnages, qui peuvent causer des problèmes lorsque Maps.app lancement (et le sera probablement - les virgules sont importants! ).
Dans la plupart des cas, vous pouvez simplement supprimer les espaces en faisant ceci:
Techniquement parlant, nous sommes tricherie. Nous devrions être en mesure d'URL-encoder toute l'adresse sans problème, et cela devrait fonctionner. Mais ... elle n'existe pas. C'est l'une de ces situations où vous avez besoin de tricher un peu pour que les choses fonctionnent correctement. Je peux vous dire de première main l'expérience que si vous URL-encoder les virgules dans votre adresse, vous obtiendrez un message qui n'a pas pu trouver Maps.app l'adresse indiquée.
Le format d'URL est très facile pour les directions:
http://maps.google.com/maps?saddr = [adresse de la source ou les coordonnées] & daddr = [adresse de destination ou de coordonnées]
Voici un exemple de prendre les coordonnées extraites de Core Location, et s'en servir comme point de départ pour les directions:
NSString *destinationString = @"Cupertino,California";
NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@", newLocation.coordinate.latitude, newLocation.coordinate.longitude, destinationString];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
Bien sûr, ce faisant cela s'arrête et lance votre application Maps.app, alors assurez-vous que vous avez tout sauvegardé avant de le faire.
Il ya un gotcha si vous utilisez des termes de recherche ou d'une adresse physique au lieu de coordonnées. Maps.app n'aime pas les espaces. Contrairement à Safari, Maps.app ne convertira pas automatiquement les espaces à 20% pour vous. D'autre part, vous ne voulez pas utiliser stringByAddingPercentEscapesUsingEncoding NSString: soit, parce que cette méthode permet de convertir les virgules, tirets, et certains autres personnages, qui peuvent causer des problèmes lorsque Maps.app lancement (et le sera probablement - les virgules sont importants! ).
Dans la plupart des cas, vous pouvez simplement supprimer les espaces en faisant ceci:
NSString *newAddressPartOfURL = [addressPartOfURL stringByReplacingOccurrencesOfString:@" " withString:@""]Techniquement parlant, nous sommes tricherie. Nous devrions être en mesure d'URL-encoder toute l'adresse sans problème, et cela devrait fonctionner. Mais ... elle n'existe pas. C'est l'une de ces situations où vous avez besoin de tricher un peu pour que les choses fonctionnent correctement. Je peux vous dire de première main l'expérience que si vous URL-encoder les virgules dans votre adresse, vous obtiendrez un message qui n'a pas pu trouver Maps.app l'adresse indiquée.
Aucun commentaire:
Enregistrer un commentaire