70 votes

Comment puis-je lancer l'application Google Maps pour iPhone à partir de ma propre application native?

L' Apple Developer Documentation explique que si vous placez un lien dans une page web, puis cliquez sur elle, tout en utilisant le navigateur Safari Mobile sur iPhone, l'application Google Maps qui est fourni en standard avec l'iPhone sera lancé.

Comment puis-je lancer la même application Google Maps avec une adresse spécifique à partir de l'intérieur de mon propre application iPhone native (c'est à dire pas d'une page web via le navigateur Safari Mobile) de la même manière que si vous touchez une adresse dans les Contacts lance la carte?

REMARQUE: CELA NE FONCTIONNE QUE SUR L'APPAREIL LUI-MÊME. PAS DANS LE SIMULATEUR.

65voto

Adam Wright Points 31715

Pour iOS 5.1.1 et inférieur, utilisez l' openURL méthode de UIApplication. Il va effectuer la normale iPhone magique URL de réinterprétation. donc

[someUIApplication openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]

invoquer l'application Google maps.

Depuis iOS 6, vous serez en invoquant Apple app de Cartes. Pour cela, configurez un MKMapItem objet à l'emplacement que vous souhaitez afficher, puis de l'envoyer à l' openInMapsWithLaunchOptions message. Pour commencer à l'emplacement actuel, essayez:

[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];

Vous aurez besoin d'être lié à l'encontre de MapKit pour cela (et il invite pour l'accès aux données de localisation, je crois).

32voto

DavidM Points 8591

Exactement. Le code dont vous avez besoin pour obtenir ceci ressemble à cela:

 UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];
 

puisque selon la documentation , UIApplication est uniquement disponible dans le délégué de la demande à moins que vous appelez sharedApplication.

29voto

Jane Sales Points 10895

Pour ouvrir Google Maps à des coordonnées spécifiques, essayez le code suivant:

 NSString *latlong = @"-56.568545,1.256281";
NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?ll=%@",
[latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
 

Vous pouvez remplacer la chaîne latlong par l'emplacement actuel de CoreLocation.

Vous pouvez également spécifier le niveau de zoom à l'aide de l'indicateur ("z"). Les valeurs sont 1-19. Voici un exemple:

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "http://maps.google.com/maps?z=8"]];

18voto

Michael Baltaks Points 1137

Il existe également désormais l'application Google Maps App Store, documentée à l' adresse https://developers.google.com/maps/documentation/ios/urlscheme.

Donc, vous devriez d'abord vérifier qu'il est installé:

[[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps://"]];

Et vous pouvez alors remplacer conditionnellement http://maps.google.com/maps?q= par comgooglemaps://?q= .

13voto

harrylove Points 1025

Voici l'URL Apple Schéma de Référence pour la Carte des Liens: http://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html

Les règles pour la création d'une carte valide de liaison sont comme suit:

  • Le nom de domaine doit être google.com et le sous-domaine doit être de cartes ou de ditu.
  • Le chemin d'accès doit être /, /maps /local, ou /m si la requête contient des site comme clé et locales en tant que valeur.
  • Le chemin ne peut pas être /maps/*.
  • Tous les paramètres doivent être pris en charge. Voir le Tableau 1 pour la liste des paramètres pris en charge**.
  • Un paramètre ne peut pas être q=* si la valeur est une URL (donc KML n'est pas pris en compte).
  • Les paramètres ne peuvent pas inclure de vue=texte ou dirflg=r.

**Voir le lien ci-dessus pour la liste des paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X