假设我有一个从一个城镇定义到另一个城镇的路线。从Google Maps API我可以恢复两者之间的路由。但是,从谷歌返回的路线是一条行车路线,其中包括仅在腿部有另一步的地方(例如,我必须从一条高速公路转向另一条高速公路的地方)的地理坐标。
我需要的是整个路线上的地理位置(纬度/经度),以特定的间隔(例如,每1/4英里或100米)。
有没有办法通过Google Maps API /网络服务实现这一目标?
或者OpenStreetMap数据库是否可以这样做?
亲切的问候, 松糕。
答案 0 :(得分:25)
OSRM为您提供具有道路几何形状的路线,因为它们位于OpenStreetMap数据库中。例如,您可以将路径作为GPX(并根据需要对此文件进行后处理)。这看起来如下:
GET http://router.project-osrm.org/viaroute?hl=en&loc=47.064970,15.458470&loc=47.071100,15.476760&output=gpx
了解详情:OSRM API docs。
答案 1 :(得分:5)
这只是google.maps.DirectionsService()。route()方法。您需要传递服务请求,然后传递一个在服务请求完成时执行的回调。
https://developers.google.com/maps/documentation/javascript/directions
答案 2 :(得分:0)
添加Marlio的答案。
您可以使用Google Maps Directions API本身。 对于给定的起点和目的地,在JSON输出中,查找以下内容:
"polyline" : {
"points" : ""
}
您可以使用解码器从折线获取坐标: https://github.com/emcconville/google-map-polyline-encoding-tool 要么。您可以使用R中的googleway软件包对其进行解码。 https://cran.r-project.org/web/packages/googleway/googleway.pdf
我不知道如何将分辨率设置为您想要的水平。但API输出中的分辨率非常好。
答案 3 :(得分:0)
虽然不用作API,这里:https://www.nmeagen.org/ 可以创建“多点线”,设置点之间的距离和下载路线(坐标)为CSV。