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
2X
3X