1

我为 IOS 6 开发应用程序。
我想运行地图应用程序并传递它的起点和目的地,以便我可以导航用户。

UIApplication *app = [UIApplication sharedApplication];

    NSString *coordinates = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%f,%f&saddr=%f,%f", ...];

    [app openURL:[NSURL URLWithString: coordinates]];

我认为这段代码将在模拟器上的浏览器中打开谷歌地图,并在设备上打开地图应用程序,但在设备上它运行浏览器谷歌地图。
难道我做错了什么?

4

4 回答 4

7

如果您不知道,Apple 不再使用 Google 地图,因此您必须为 Apple 地图使用他们的新 URL 方案。(注意:如果你支持 iOS 5,那么你应该同时使用。谷歌地图方案和苹果地图)

这是一个示例查询http://maps.apple.com/maps?daddr=San+Francisco,+CA&saddr=cupertino

这是它的文档:Apple Maps URL Schemes

于 2012-09-26T16:56:03.357 回答
2

另一种选择,如果你有一个 MKPlacemark 对象:

// placemark is your MKPlacemark object
MKMapItem* destination =  [[MKMapItem alloc] initWithPlacemark:placemark];

if([destination respondsToSelector:@selector(openInMapsWithLaunchOptions:)])
{
   // Using iOS6 native maps app
   [destination openInMapsWithLaunchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving}];      
}
else
{
   // Using iOS5 which has the Google Maps application
   NSString *currentLocation = @"Current%20Location";
   NSString *routeString = [NSString stringWithFormat:@"%@saddr=%@&daddr=%@", kMapsBaseUrl, currentLocation, address.mapAddress];
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:routeString]];
}
于 2012-09-26T17:11:35.497 回答
2

这是我在 iOS 8 上使用的。

首先我尝试打开网址@“comgooglemaps://”,如果它有效,这意味着他们安装了谷歌地图应用程序,所以我可以打开该应用程序。

如果它不起作用,则该应用程序不存在,只需在 Safari 中打开谷歌地图。

在这两种情况下,它都会通过查询q=London

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]){ //open google maps app
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"comgooglemaps://?q=London"]];
}
else{ //open browser 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]];
}
于 2015-07-30T14:07:21.093 回答
1
-(void)openAddressOnNativeMapApp{
NSString *addressOnMap = @"cupertino";  //place name
NSString* addr = [NSString stringWithFormat:@"http://maps.apple.com/?q=%@",addressOnMap];
NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];

}

欲了解更多信息,请访问Apple Doc 以打开本地地图应用程序

于 2014-07-16T08:38:50.870 回答