2

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

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

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

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

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

[MKMapItem openMapsWithItems:mapItems launchOptions:options];

然而,做事方式使地图呈现在我们的应用程序上——用户没有明显的方式从显示的地图返回到我们的应用程序。我们更喜欢 UINavigationController 中的地图,以便用户能够使用后退按钮从地图显示中返回。你们中有人知道我们如何将地图嵌入到导航控制器中吗?我们如何嵌入调用 [MKMapItem openMapsWithItems:] 生成的地图?

4

1 回答 1

2

我认为您对当前的解决方案有些误解。根据您所说的用户永远不会离开您的应用程序,他们只是在 UIWebView 中查看 Google 地图。这openMapsWithItems:mapItems:launchOptions:实际上会打开 Maps 应用程序,因此您无法从 Maps 应用程序中提供返回您的应用程序的链接。

话虽如此,有几件事需要考虑。

  1. 在地图应用程序中打开对用户来说非常有用,他们可以获得地图应用程序提供的所有好处,例如转弯路线和搜索
  2. 让您的用户留在您的应用程序中是一种在地图视图上显示位置的非常快速且用户友好的方式

因此,考虑到这两个因素,我个人总是投票支持两者。在您的应用程序中提供一个简单的地图视图,以便他们可以快速查看地图上的位置,然后还为他们提供在地图应用程序中打开应用程序的选项,以便他们可以根据需要做更多的事情。

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

于 2012-10-08T23:59:45.257 回答