如何将iOS地图嵌入到UINavigationController中

时间:2012-10-08 22:38:01

标签: objective-c uinavigationcontroller mapkit ios6

你们中的任何人都知道如何将新地图嵌入到导航中吗?我们有一个应用程序,其中包含以下代码 - 调用Google地图以在地图中显示开始和结束地址。

NSURL *mapURL = [NSURL URLWithString:some_url_string];
[webview loadRequest:[NSURLRequest requestWithURL:mapURL]];

UIViewController *viewController = [[UIViewController alloc] init];
viewController.title = @"My Map Display";
[viewController.view addSubview:webview];

[self.navigationController pushViewController:viewController animated:YES];

我们有用于构建正确网址的位置坐标。

上面的代码将新的UIViewController / webview推送到当前视图的navigationController,以允许应用程序的用户使用后退按钮返回我们的应用程序。

当用户想要新地图时,我们想在运行iOS 6的设备上调用新的Map API。 Apple为新API MKMapItem显示了以下使用模式:

[MKMapItem openMapsWithItems:mapItems launchOptions:options];

然而,做事方式是在我们的应用程序上呈现地图 - 没有明显的方式让用户从显示的地图返回我们的应用程序。我们更喜欢UINavigationController中的地图,并且用户可以使用后退按钮从地图显示中返回。你们中的任何人都知道如何将地图嵌入到navigationController中吗?我们如何将调用生成的地图嵌入[MKMapItem openMapsWithItems:]?

1 个答案:

答案 0 :(得分:2)

我认为你对目前的解决方案有点误解。根据您所说的用户永远不会离开您的应用,他们只是在UIWebView中看到谷歌地图。 openMapsWithItems:mapItems:launchOptions:实际上会打开地图应用,因此您无法在地图应用中提供返回应用的链接。

据说,有几件事需要考虑。

  1. 在地图应用中打开对用户非常有用,他们可以获得地图应用提供的所有好处,例如转弯路线和搜索
  2. 在您的应用中保持用户是一种非常快速且用户友好的方式在地图视图中显示位置
  3. 所以,考虑到这些,我个人总是投票同时做这两件事。在您的应用中提供简单的地图视图,以便他们可以快速查看地图上的位置,然后为他们提供在地图应用中打开应用的选项,以便他们可以根据需要执行更多操作。

    如果您选择此路线,那么您需要做的是查看MKMapView类,而不是将您的webview添加为子视图,您将添加MKMapView作为子视图并将注释添加到MKMapView。然后,一种常见的使用模式是允许用户触摸注释以显示“标注”,并在地图应用中打开按钮。