iOS打开地图应用程序的链接

我正在开发一个活动应用程序,我正在尝试添加一个“获取路线”button,在Apple地图或Google地图中打开路线。 我很高兴现在使用苹果地图,因为它很容易embeddedhttp://maps.apple.com/?q=XYZ()

我的应用程序正在显示带有UIWebView的HTML网站,所以这可能是问题所在,但是当您按下链接时,它实际上会在UIWebView打开并随机显示Google地图。 有一个函数可以放入我的HTML代码中,强制链接在本机Apple或Google Maps中打开?

在这里你可以find有关Google Maps URL Scheme的信息

 UIApplication.sharedApplication().openURL(NSURL(string: "comgooglemaps://?q=XYZ")!) 

将强制使用Google地图。 你可能想要做

 UIApplication.sharedApplication().canOpenURL(NSURL(string:"comgooglemaps://")!) 

首先要确保Google地图可用。 如果没有,只需打电话给你的经常

 http://maps.apple.com/?q=XYZ() 

打开苹果地图。

不要在你的URL中使用http协议,而应该使用maps协议,以便你的链接看起来像这样:

 maps://maps.apple.com/?q=Test+Search 

您也可以在Google地图中将其打开,如果用户安装了该地图,则可以使用以下URL:

 comgooglemaps://?q=Test+Search 

尽pipe如果用户没有安装它,你可能会得到意想不到的结果。

如果这不起作用,可以使用UIWebView委托方法webView:shouldStartLoadWithRequest:navigationType:拦截链接并正确打开地图应用程序。

完整的答案

码:

 - (IBAction)getDirectionsAction:(id)sender { NSURL *googleURL = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"comgooglemaps://?daddr=%@", @"44.294349,-70.326973"]]; NSURL *googleWebURL = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http://www.maps.google.com/maps?daddr=%@", @"44.294349,-70.326973"]]; NSURL *appleURL = [NSURL URLWithString:@"http://maps.apple.com/?daddr=311+East+Buckfield+Road+Buckfield+Maine"]; NSURL *wazeURL = [NSURL URLWithString:@"waze://?ll=44.294349,-70.326973&navigate=yes"]; // Lets try the Waze app first, cuz we like that one the most if ([[UIApplication sharedApplication] canOpenURL:wazeURL]) { [[UIApplication sharedApplication] openURL:wazeURL options:@{} completionHandler:^(BOOL success){ }]; return; } // Lets try the Apple Maps app second if ([[UIApplication sharedApplication] canOpenURL:appleURL]) { [[UIApplication sharedApplication] openURL:appleURL options:@{} completionHandler:^(BOOL success){ }]; return; } // If Apple Maps is unsuccessful, let's try the Google Maps app if ([[UIApplication sharedApplication] canOpenURL:googleURL]) { [[UIApplication sharedApplication] openURL:googleURL options:@{} completionHandler:^(BOOL success){ }]; return; } // Uh, oh...Well, then lets launch it from the web then. else { [[UIApplication sharedApplication] openURL:googleWebURL options:@{} completionHandler:^(BOOL success){ }]; } } 

版画特性:

 <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>http://maps.apple.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> <key>http://maps.google.com/</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSExceptionRequiresForwardSecrecy</key> <true/> </dict> </dict> </dict> <key>LSApplicationQueriesSchemes</key> <array> <string>waze</string> <string>comgooglemaps</string> </array> <key>NSLocationAlwaysUsageDescription</key> <string>For Use for directions</string> 

BUTTON

1X 1X

2倍 2X

3X 3X