在iPhone上实现路由的标准/最佳方式是什么?

在iPhone上实现路由的标准/最佳方式是什么?,iphone,objective-c,google-maps,Iphone,Objective C,Google Maps,我读过一些帖子,是为那些想在iPhone上的地图上绘制路线的开发者写的,但对于如何最好地实现这一点,还没有令人满意的答案。您可以使用Route Me库,在顶部MKMapView上添加一个层,或将坐标发送到phones地图软件,然后从应用程序导航,我认为这是糟糕的用户体验。 所有这些都不能很好地解决问题 一些帖子写道存在法律障碍,另一些帖子写道这是关于许可费的问题。这必须是一个非常常见的需求,因此也是要实现的一个常见特性。那么,事实上的标准方法是什么呢 有经验的人能分享他们对这个问题的见解吗 溴

我读过一些帖子,是为那些想在iPhone上的地图上绘制路线的开发者写的,但对于如何最好地实现这一点,还没有令人满意的答案。您可以使用Route Me库,在顶部MKMapView上添加一个层,或将坐标发送到phones地图软件,然后从应用程序导航,我认为这是糟糕的用户体验。 所有这些都不能很好地解决问题

一些帖子写道存在法律障碍,另一些帖子写道这是关于许可费的问题。这必须是一个非常常见的需求,因此也是要实现的一个常见特性。那么,事实上的标准方法是什么呢

有经验的人能分享他们对这个问题的见解吗


//Christoff

所以我决定使用苹果开发者技术支持来真正解决这个问题。答复如下:


你好,

感谢您向Apple Worldwide Developer技术支持咨询。 我回复您,让您知道我已收到您的技术援助请求

实现这一点的实际标准方法是使用Map应用程序。我知道这不是你想要的。你想留在你的应用程序中。当涉及到用户指导时,MKMapView API并没有为您提供这种级别的支持。您必须依靠一个单独的web服务来获取这些方向,然后自己在MKMapView上绘制每个横向/纵向点。基本上,您需要向GoogleDirections API发出HTTP请求。这些条款要求你在谷歌地图上显示结果;既然MKMapView显示的是谷歌,那应该没问题

如果您成功地从Yahoo或Google服务中获取驾驶方向,MKMapView将允许您使用MKOverlayPathView和MKShapes绘制多边形形状来绘制视觉路线。苹果有一个名为“KMLViewer”的样本,可以在 它显示了如何基于KML绘制点。方法是相同的,因为我们正在处理lat/long坐标

您可能想考虑使用MAP应用程序,这将是相当容易的。您所需要的就是:

// for lat/long directions
NSString *urlString1 = @"http://maps.google.com/maps?daddr=37.324885,-122.032378&saddr=37.332094,-122.03124";

// for address directions
NSString *urlString2 = @"http://maps.google.com/maps?f=d&source=s_d&saddr=1+Infinite+Loop,+Cupertino,+CA+95014&daddr=Mandarin+Gourmet,+Cupertino,+CA&hl=en&geocode=FcajOQIdYvO5-Ckbd16TtrWPgDFAc4Pi50E92A%3BFZ2GOQIdLe65-CHRv0sTH7YegykLqKn9rbWPgDGUnqKbIqi1Bg&mra=ls&sll=37.325567,-122.032989&sspn=0.007243,0.007285&ie=UTF8&ll=37.328195,-122.031466&spn=0.007243,0.007285&z=17";

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: urlString1]];
第二封电子邮件:

我想在上一封电子邮件中澄清一下使用谷歌服务的条款。谷歌要求您在谷歌地图上显示路线结果,MKMapView使用谷歌地图。然而,我会再次检查苹果公司自己的T&C关于外部服务的使用情况,比如MKMapView本身的用户指南。我不希望你沿着一条路走下去,却发现沿途有法律限制



以一种好的方式解决这个问题对你有什么好处?你说引用的方法是一种糟糕的用户体验,但没有定义好的方法是什么。在我开发的应用程序的第一个版本之后,有许多用户抱怨必须“离开”应用程序才能获得方向。我对良好用户体验的看法是,直接在地图上添加驾驶方向,那么地图就可以在它自己的视图中,只要你可以使用导航栏返回到以前的视图。我想说的是,你必须能够留在应用程序中。这是关于用户体验的。第二部分是:你是如何做到这一点的?