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

时间:2010-10-19 09:49:06

标签: iphone objective-c google-maps

我已经阅读了一些关于想要在iPhone上绘制地图路线的开发人员的帖子,但没有令人满意的答案,如何最好地实现这一点。您可以使用Route-Me库,在顶部MKMapView上添加图层或将坐标发送到手机地图软件,然后从您的应用程序导航,我认为这是糟糕的用户体验。 这些都没有以一种好的方式解决问题。

有些邮报写道,存在法律障碍,其他人写道,这是关于许可资金。这必须是一个非常普遍的要求,因此是实现的共同特征。那么事实上的标准方法是什么呢?

具有良好经验的人可以分享他们对这个问题的见解吗?

BR //克里斯托弗

1 个答案:

答案 0 :(得分:3)

所以我决定使用Apple Developer Technical Support来清除这一点。这是回复:


您好,

感谢您向Apple Worldwide Developer Technical Support的询问。 我的回复是让您知道我已收到您的技术协助请求。

事实上的标准方法是使用Map应用程序。我意识到这不是你想要的。你想留在你的应用程序中。在涉及用户指示时,MKMapView API不会为您提供这种级别的支持。您将不得不依靠单独的Web服务来获取这些方向,然后在MKMapView上自己绘制每个纬度/长点。基本上,您需要向Google Directions API发出HTTP请求。这些条款要求您在Google地图上显示结果;由于MKMapView显示谷歌,这应该没问题。

http://code.google.com/apis/maps/documentation/directions/#DirectionsRequests

如果您成功通过雅虎或谷歌服务获取行车路线,MKMapView将允许您使用MKOverlayPathView和MKShapes绘制视觉过程来绘制类似多边形的形状。 Apple发现了一个名为“KMLViewer”的样本     http://developer.apple.com/library/ios/#samplecode/KMLViewer/Introduction/Intro.html 它向您展示了如何基于KML绘制点。方法是相同的,因为我们处理纬度/经度坐标。

您可能需要考虑使用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]];

第二封电子邮件:

我在上一封电子邮件中明确了解使用Google服务的条款。 Google要求您在Google地图上显示路线结果,MKMapView使用该地图。但是,我会仔细检查Apple自己的T& Cs,关于使用MKMapView本身的用户指示等外部服务。我不希望你一路走下去只是为了找到法律限制。