我如何从我的原生应用程序中启动Google Maps iPhone应用程序?

Apple开发者文档 (现在链接已经失效)解释说,如果您在网页中放置链接,然后在iPhone上使用Mobile Safari时单击该链接,则会启动与iPhone一样提供的Google地图应用程序。

我如何才能在自己的本地iPhone应用程序(即不通过Mobile Safari的网页)中启动具有特定地址的Google Maps应用程序,方法与点击联系人中地址启动地图的方式相同?

注意:这只适用于本设备。 不在模拟器中。

对于iOS 5.1.1及更低版本,请使用UIApplicationopenURL方法。 它将执行正常的iPhone神奇的URL重新解释。 所以

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

应该调用Google地图应用程序。

从iOS 6开始,您将调用Apple自己的地图应用程序。 为此,使用要显示的位置来configuration一个MKMapItem对象,然后向其发送openInMapsWithLaunchOptions消息。 要从当前位置开始,请尝试:

 [[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil]; 

你需要连接到MapKit的(这将提示我的位置访问,我相信)。

究竟。 你需要的代码就是这样的:

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

因为根据文档 ,UIApplication只能在应用程序委托中使用,除非调用sharedApplication。

要以特定的坐标打开Goog​​le地图,请尝试以下代码:

 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]]; 

您可以使用CoreLocation中的当前位置replacelatlongstring。

您也可以使用(“z”)标志指定缩放级别。 值是1-19。 这是一个例子:

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

现在还有App Store Google地图应用,在https://developers.google.com/maps/documentation/ios/urlscheme

所以你首先检查它的安装:

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

然后,您可以使用comgooglemaps://?q=有条件地replacehttp://maps.google.com/maps?q=

以下是适用于Map Links的Apple URL Scheme参考: http :

创build有效的地图链接的规则如下:

  • 该域必须是google.com,子域必须是地图或ditu。
  • 如果查询包含网站作为键和本地作为值,则path必须是/,/ maps,/ local或/ m。
  • path不能是/ maps / *。
  • 所有参数必须被支持。 请参阅表1以获取支持的参数列表**。
  • 如果值是一个URL,那么参数不能是q = *(因此KML不被拾取)。
  • 参数不能包含view = text或dirflg = r。

**请参阅上面的链接以获取支持的参数列表。

如果您使用的是ios 10,请不要忘记在Info.plist中添加查询scheme

 <key>LSApplicationQueriesSchemes</key> <array> <string>comgooglemaps</string> </array> 

如果你正在使用objective-c

 if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps:"]]) { NSString *urlString = [NSString stringWithFormat:@"comgooglemaps://?ll=%@,%@",destinationLatitude,destinationLongitude]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; } else { NSString *string = [NSString stringWithFormat:@"http://maps.google.com/maps?ll=%@,%@",destinationLatitude,destinationLongitude]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]]; } 

如果你使用的是swift 2.2

 if UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps:")!) { var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)" UIApplication.sharedApplication().openURL(NSURL(string: urlString)!) } else { var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)" UIApplication.sharedApplication().openURL(NSURL(string: string)!) } 

如果你使用的是swift 3.0

 if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) { var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)" UIApplication.shared.openURL(URL(string: urlString)!) } else { var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)" UIApplication.shared.openURL(URL(string: string)!) } 

对于手机的问题,你在模拟器上testing吗? 这只适用于设备本身。

另外,openURL返回一个bool,你可以用它来检查你运行的设备是否支持这个function。 例如,您无法在iPod Touch上拨打电话:-)

“g”变成“q”

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

如果你仍然有麻烦,这个video显示如何从谷歌“我的地图”显示在iPhone上 – 你可以把链接,并将其发送给任何人,它的工作原理。

http://www.youtube.com/watch?v=Xo5tPjsFBX4

要移至Google地图,请使用此api并发送目的地的经纬度

 NSString* addr = nil; addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", destinationLat,destinationLong]; NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; [[UIApplication sharedApplication] openURL:url]; 

如果您需要比Google URL格式更具灵活性,或者您希望在应用程序中embedded地图,而不是启动地图应用程序,则可以在https://sourceforge.net/projects/quickconnect上find示例&#x3002;

如果您需要比Googleurl格式提供的更多灵活性,或者您希望在应用程序中embedded地图,而不是启动地图应用程序,则可以使用此应用程序。

它甚至会提供源代码来完成所有的embedded。

iPhone4 iOS 6.0.1(10A523)

对于Safari和Chrome。 最新版本至今(2013年6月 – 10日)。

下面的URLscheme也适用。 但是Chrome浏览器只能在页面内工作,不能从地址栏中运行。

地图:Q = GivenTitle @纬度,经度

 **Getting Directions between 2 locations** NSString *googleMapUrlString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%@,%@&daddr=%@,%@", @"30.7046", @"76.7179", @"30.4414", @"76.1617"]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapUrlString]]; 

只需调用此方法,并将Google Maps URL Scheme添加到与此答案相同的.plist文件中即可。

Swift-4: –

 func openMapApp(latitude:String, longitude:String, address:String) { var myAddress:String = address //For Apple Maps let testURL2 = URL.init(string: "http://maps.apple.com/") //For Google Maps let testURL = URL.init(string: "comgooglemaps-x-callback://") //For Google Maps if UIApplication.shared.canOpenURL(testURL!) { var direction:String = "" myAddress = myAddress.replacingOccurrences(of: " ", with: "+") direction = String(format: "comgooglemaps-x-callback://?daddr=%@,%@&x-success=sourceapp://?resume=true&x-source=AirApp", latitude, longitude) let directionsURL = URL.init(string: direction) if #available(iOS 10, *) { UIApplication.shared.open(directionsURL!) } else { UIApplication.shared.openURL(directionsURL!) } } //For Apple Maps else if UIApplication.shared.canOpenURL(testURL2!) { var direction:String = "" myAddress = myAddress.replacingOccurrences(of: " ", with: "+") var CurrentLocationLatitude:String = "" var CurrentLocationLongitude:String = "" if let latitude = USERDEFAULT.value(forKey: "CurrentLocationLatitude") as? Double { CurrentLocationLatitude = "\(latitude)" //print(myLatitude) } if let longitude = USERDEFAULT.value(forKey: "CurrentLocationLongitude") as? Double { CurrentLocationLongitude = "\(longitude)" //print(myLongitude) } direction = String(format: "http://maps.apple.com/?saddr=%@,%@&daddr=%@,%@", CurrentLocationLatitude, CurrentLocationLongitude, latitude, longitude) let directionsURL = URL.init(string: direction) if #available(iOS 10, *) { UIApplication.shared.open(directionsURL!) } else { UIApplication.shared.openURL(directionsURL!) } } //For SAFARI Browser else { var direction:String = "" direction = String(format: "http://maps.google.com/maps?q=%@,%@", latitude, longitude) direction = direction.replacingOccurrences(of: " ", with: "+") let directionsURL = URL.init(string: direction) if #available(iOS 10, *) { UIApplication.shared.open(directionsURL!) } else { UIApplication.shared.openURL(directionsURL!) } } } 

希望,这是你要找的。 任何关心回到我身边。 🙂