0

我用 Mapkit 实现了一个简单的应用程序,它显示了某个地址的一个 pin。如果我单击此图钉,我可以看到位置的详细信息和披露指示。在这一点上,我想让用户获得从他的位置到那里的路线。

我唯一的想法是推动一个网络视图,该视图在谷歌地图中打开一个具有所需坐标的 URL。有很多有效且可用的方法来做到这一点吗?还有其他想法吗?

在此先感谢,亚萨

4

2 回答 2

2

您必须决定是要嵌入UIWebView还是让用户转到地图应用程序。如果您让用户退出您的应用程序,但地图应用程序中的用户体验远好于网络体验,您会失去“用户连接”。出于这个原因,我选择了地图应用程序。

请参阅http://wiki.akosma.com/IPhone_URL_Schemes#Maps了解如何通过UIApplication openURL.

请注意,如果未安装地图应用程序(只是模拟器?),这将打开网页,但在 Safari 中而不是在嵌入式UIWebView.

于 2012-01-28T17:54:18.563 回答
1

实际上,在 iOS7 中,您可以使用 MapKit 在您的应用程序中指定方向。 是我的来源。我引用:

MKDirectionRequest 和 MKDirectionResponse 许多移动用户依赖来自他们设备的方向,在 iOS 7 中,开发人员现在可以在您的应用程序的上下文中提供它们,而不是切换到地图应用程序。您从源和目标开始您的请求。其他选项包括替代路线、运输类型和出发/到达时间。

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; 
> request.source = source;  request.destination = destination; 
> request.requestsAlternateRoutes = YES;    MKDirections *directions =
> [[MKDirections alloc] initWithRequest:request];  [directions
> calculateDirectionsWithCompletionHandler: ^(MKDirectionsResponse
> *response, NSError *error) {      if (error) {        NSLog(@"Error is %@",error);    } else {        [self showDirections:response];     }  }];

MKDirectionsResponse 提供了大量信息,其中包括一个 MKRoutes 数组,每个 MKRoutes 都包含一个 MKRouteStep 数组,以便您可以提供每个步骤的路线,让您的用户到达他们的位置。通过将 MKRoute 和 MKRouteSteps 放在一个数组中,可以很容易地在表格中显示信息或在地图上显示信息,如下所示:

for (MKRoute *route in _response.routes) {      [_mapView
> addOverlay:route.polyline level: MKOverlayLevelAboveRoads];  }

结果可能会随着用户移动设备而频繁更新,因此不要长时间缓存结果。

借助 Google Maps API 中的类似功能,Google 对您的应用在一天内可以处理的请求数量施加了限制。苹果选择了不同的方向和速率限制每台设备,这意味着没有每个应用程序或每个开发人员的使用限制。如果设备达到高使用率,则可能会受到限制,这旨在限制将执行诸如递归发出请求之类的操作的应用程序。

抱歉,如果这个答案的格式很奇怪,我发现所有引号和代码格式都很困难。希望这可以帮助。

于 2013-12-22T20:16:31.367 回答