如何获取地图上两点之间的路线方向以绘制行车路线?

Posted

技术标签:

【中文标题】如何获取地图上两点之间的路线方向以绘制行车路线?【英文标题】:how to get Route directions between two points on a map to draw driving directions? 【发布时间】:2009-10-14 15:08:55 【问题描述】:

有没有办法使用核心位置或谷歌或其他一些 api 在地图上提供两个点并获得路线的纬度/经度对的结果集?

我在本教程Drawing polyines or routes on a MKMapView 中看到如何使用核心图形绘制行车方向...但在示例代码中它有 route.csv,它具有预定义的经度和纬度集.....我该怎么做制作一对经度和纬度,以便我可以绘制行车路线。

【问题讨论】:

【参考方案1】:

公司在开发路由算法上投入了数百万美元,所以我非常怀疑你是否能够在任何地方免费获得它(不过我很高兴自己错了)。例如,Google Maps javascript API 支持路由,所以我想你可以破解它。请注意,结果不会很快漂亮。

【讨论】:

你看过上面的链接吗?我想通过objective-c来做到这一点 是的,我看到了链接。就像我说的那样,您需要找到一项允许您执行此操作的服务,而我不知道有任何免费服务。 Microsoft Virtual Earth(又名 Bing Maps)有一个网络服务,但据我所知它不是免费的(参见microsoft.com/maps/platform/default.aspx)。我相信这是一个 JSON 服务,所以你必须创建一些东西来与之通信——这超出了这个问题的范围。【参考方案2】:

如果您对路线请求的使用有限(每天少于一定数量)并且始终在 Google 地图上显示结果,那么您确实有资格使用免费的 Google Directions API。

https://developers.google.com/maps/documentation/directions/

彻底阅读许可证部分以了解限制。您应该能够轻松地请求一个比 xml 更容易解析的 json 响应(加上 Apple 在 ios 中添加的 json 解析器)。

例如

http://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|Lexington,MA&sensor=false

如果您超出限制,您应该查看他们的营业执照。

【讨论】:

【参考方案3】:

老问题,但 MTDirectionsKit 最近开源了,效果很好:

MTDirectionsKit

【讨论】:

【参考方案4】:

使用 Google API,您可以从两点获取路线,唯一的问题是如果您不付费,您每天只能使用一次。

搜索如何从google获取key API,youtube上有很多视频都在讨论。

此外,我有一个库,可以帮助您在点之间画线 this one https://github.com/jd-alexander/Google-Directions-android

build.gradle(Module:app)中实现后,在类中实现library,如

public class LocationMapActivity extends AppCompatActivity implements RoutingListener

实现方法会出现错误(强制实现它们,但没有必要使用它们)。

我刚刚这样做了:

 public void route()

       Routing routing = new Routing.Builder()
                    .travelMode(/* Travel Mode */)
                    .withListener(/* Listener that delivers routing results.*/)
                    .waypoints(/*waypoints*/)
                    .key(/*api key for quota management*/)
                    .build();
        routing.execute();
    

链接中的更多信息。

【讨论】:

以上是关于如何获取地图上两点之间的路线方向以绘制行车路线?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS中以文本形式获取两个位置之间的路线

如何在我的应用 iOS6 中获取行车路线

获取行车方向的android代码

使用 GPS Provider 在地图上使用设备的当前位置绘制路线

如何使用谷歌方向 API 在苹果地图上快速绘制路线?

Android 谷歌地图 行车路线