如何获取地图上两点之间的路线方向以绘制行车路线?
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();
链接中的更多信息。
【讨论】:
以上是关于如何获取地图上两点之间的路线方向以绘制行车路线?的主要内容,如果未能解决你的问题,请参考以下文章