MKMapView 路线/方向

Posted

技术标签:

【中文标题】MKMapView 路线/方向【英文标题】:MKMapView Route/Directions 【发布时间】:2010-12-02 11:07:51 【问题描述】:

我发现 Google Maps API 支持路线:

var map;
var directionsPanel;
var directions;

function initialize() 
  map = new GMap2(document.getElementById("map_canvas"));
  directionsPanel = document.getElementById("my_textual_div");
  map.setCenter(new GLatLng(49.496675,-102.65625), 3);
  directions = new GDirections(map, directionsPanel);
  directions.load("from: 500 Memorial Drive, Cambridge, MA to: 4 Yawkey Way, Boston, MA 02215 (Fenway Park)");

那么如何将它翻译成 Objective-C 以便 iPhone 可以检索到它呢?我知道如何在 MKMapView 上画线我只需要路线的地理位置。

或者也许有不同的方法来获取两个地理位置点之间的路线。

请告诉我,

提前致谢。

【问题讨论】:

【参考方案1】:

提到并公开了一个未记录的 Google Maps Directions API here

您还应该查看示例 iPhone 应用程序,该应用程序使用上面提到的 API here 将路线/方向绘制到 MKMapView 上

但警告您有关未记录的 Google Maps Directions API 的许可问题。

希望这会有所帮助。

【讨论】:

-- 通知 -- 请在 github https://github.com/kadirpekel/MapWithRoutes 找到示例项目 当我在撰写此评论时单击前一分钟时,“此处”的链接都不起作用。请检查它们是否工作并更新它们..因为我确实属于它们...... 使用谷歌地图 APi 仅在使用谷歌地图时有效,这似乎不再是一种可信赖的方法,因为 ios 5 不允许这样做,需要更好的方法。如果有人发现,请发布。【参考方案2】:

我原本想说(而且我相信其他人会提出)Google 地图的使用条款规定,如果您打算使用 MapKit,则不能使用路线。但后来我仔细检查了http://code.google.com/apis/maps/terms/iPhone.html,并没有真正找到明确的限制。如果我理解正确,它实际上是说你不能使用方向,只要它与 GPS 驱动的实时转向功能相关联。您应该自行判断它是否正常以及它是否会影响您在 AppStore 上被接受的机会。

就在 Objective-C 中获取实际数据而言,最好的办法是查看 Google Ajax 搜索文档 [http://code.google.com/apis/ajaxsearch/documentation/],尤其是 Flash 和其他非 javascript 环境下的部分。它解释了一个 RESTful API,您可以在其中向 Google 发送 HTTP GET 请求并取回 JSON 数据。这是我发现从 Google 获取与 Javascript 无关的程序化数据的唯一方法。

一旦确定了要调用的正确 URL,您就可以将整个内容封装在 ASIHTTPRequest 调用中,并将结果提供给 JSON parser。要记住的一件事是,RESTful API 一次只返回几个结果(4 到 8 个),并且您必须继续返回,直到获得所有数据。 API 返回的结果数量似乎也有 64 项上限,因此一些复杂的边缘情况可能会受到影响。

【讨论】:

我觉得奇怪的是他们几乎支持除了方向之外的任何东西。哦,好吧,我猜我最好使用实际的谷歌地图应用程序。

以上是关于MKMapView 路线/方向的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中获取 MKMapView 方向

使用 UIView 作为 MKMapView 子视图来绘制路线

如何在 iPhone 应用程序内的 MKMapView 中显示和连接多个位置与带有注释的路线?

确定行进路径 mkmapview swift 上的距离

MKMapView 区域在 iOS7 中方向更改后损坏

想要追踪用户移动的路线