【问题标题】:From iOS Mapkit to Google Maps?从 iOS Mapkit 到 Google 地图?
【发布时间】:2012-01-28 17:46:58
【问题描述】:
我使用 Mapkit 实现了一个简单的应用程序,该应用程序显示某个地址的一个 pin。
如果我单击此图钉,我可以看到位置的详细信息和披露指示。
此时,我想让用户获得从他所在位置到那里的路线。
我唯一的想法是推送一个 web 视图,该视图在谷歌地图中打开一个带有所需坐标的 url。
有很多有效且可用的方法来做到这一点吗?还有其他想法吗?
提前致谢,
亚萨
【问题讨论】:
标签:
ios
google-maps
mapkit
directions
【解决方案1】:
您必须决定是要嵌入 UIWebView 还是让用户转到地图应用。如果您让用户退出您的应用程序,但地图应用程序中的用户体验远好于网络体验,您会失去“用户连接”。出于这个原因,我选择了地图应用。
请参阅http://wiki.akosma.com/IPhone_URL_Schemes#Maps,了解如何通过UIApplication openURL 启动地图应用程序。
请注意,如果未安装地图应用(只是模拟器?),这将打开网页,但会在 Safari 中打开,而不是在嵌入的 UIWebView 中。
【解决方案2】:
实际上,在 iOS7 中,您可以使用 MapKit 在您的应用程序中指定路线。 Here 是我的来源。我引用:
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 数组,每个都包含一个 MKRouteStep 数组,所以
你可以提供每一步的指导,让你的用户找到他们的
地点。通过将 MKRoute 和 MKRouteSteps 放在一个数组中,它
可以轻松地在表格中显示信息或显示
地图信息如下:
for (MKRoute *route in _response.routes) { [_mapView
> addOverlay:route.polyline level: MKOverlayLevelAboveRoads]; }
结果可能会随着用户移动设备而频繁更新,因此
不要长时间缓存结果。
借助 Google Maps API 中的类似功能,Google 施加了限制
您的应用在一天内可以处理的请求数。苹果选择了
去不同的方向和速率限制每个设备,这
意味着没有每个应用程序或每个开发人员的使用限制。一个设备可以
如果达到高使用率则被限制,这是为了抑制
会执行递归请求等操作的应用程序。
对不起,如果这个答案的格式很奇怪,我发现所有引号和代码格式都很困难。希望这会有所帮助。