使用Google Maps API获取旅行时间数据

我使用谷歌地图API遇到的所有例子似乎都显示了某种地图。 我希望将从A到B的道路描述请求到您的车辆的预计行驶时间的数据纳入到网站中。 只有这些数据。 没有加载最终访问者的地图是否可能?

是的,这绝对是可能的使用API​​。 你可以构造一个没有地图或方向div的GDirections对象。 您可以执行从A到B的加载请求,然后调用getDuration方法来获取总行程时间。

首先你需要创build一个方向对象:

// no need to pass map or results div since // we are only interested in travel time. var directions = new GDirections (); 

然后做你的负载请求来解决方向(我已经使用了两个纬度和经度作为我的起点和终点,但是你也可以在这里使用地址):

 var wp = new Array (); wp[0] = new GLatLng(32.742149,119.337218); wp[1] = new GLatLng(32.735347,119.328485); directions.loadFromWaypoints(wp); 

然后,您需要监听加载事件,以便在解决方向后调用getDuration

 GEvent.addListener(directions, "load", function() { $('log').innerHTML = directions.getDuration ().seconds + " seconds"; }); 

你可以在这里find整个例子和JavaScript 。 您可以查看Google地图文档 ,了解更多关于您可以给GDirections对象的选项(如步行距离等)。 您还应该听取地理编码失败的错误事件。

上面的答案是不正确的 – 这违反了Google API的服务条款。

Google Maps API只允许您计算出现在显示给用户的Google地图上的旅行时间。

如果您没有向服务的最终用户显示Google地图,则不能使用该API。

备案 :目前(2015年)GDirections,GLatLng,GEvent等已弃用


您可以使用google.maps.DirectionsService类 (Google Maps JavaScript API V3)

在下面的片段中,位置和目标是包含纬度和经度坐标的对象。

1)google.maps.DirectionsService类承认LatLng和string值来提供其原始和目标属性。
2)LatLng是纬度和经度的地理坐标点。

 var origin = new google.maps.LatLng( location.latitude, location.longitude ); // using google.maps.LatLng class var destination = target.latitude + ', ' + target.longitude; // using string var directionsService = new google.maps.DirectionsService(); var request = { origin: origin, // LatLng|string destination: destination, // LatLng|string travelMode: google.maps.DirectionsTravelMode.DRIVING }; directionsService.route( request, function( response, status ) { if ( status === 'OK' ) { var point = response.routes[ 0 ].legs[ 0 ]; $( '#travel_data' ).html( 'Estimated travel time: ' + point.duration.text + ' (' + point.distance.text + ')' ); } } ); 

来自google.maps.DirectionsRenderer

使用距离:

 directionsDisplay.directions.routes[0].legs[0].distance.text 

使用时间:

 directionsDisplay.directions.routes[0].legs[0].duration.text 
  1. 首先到这里: https : //developers.google.com/maps/documentation/distance-matrix/start您需要:创build或select一个项目,启用API并获取API密钥只需点击“获取密钥”并假设你有一个Gmail帐户,你可以得到一切(或者login到你的gmail帐户后去console.developer.google.com,并创build一个应用程序,并启用API,并获得API密钥)。
  2. 现在转到https://developers.google.com/maps/documentation/distance-matrix/intro并按照详细信息进行操作。; 有几件事需要注意:如果您希望当前的stream量影响您的驾驶时间,请使用以下命令:&mode = driving&departure_time = now&traffic_model =悲观。 我也用&units = imperial

只有在满足以下所有条件的情况下才会返回stream量持续时间:

该请求包含一个departure_time参数。 该请求包含有效的API密钥或有效的Google Maps API Premium计划客户端ID和签名。 交通状况可用于请求的路线。 模式参数设置为驾驶。

是的,你必须显示一个谷歌地图与驾驶时间“谷歌地图距离matrixAPI可能只能与在谷歌地图上显示结果一起使用。 禁止在不显示Google地图的情况下使用Google Maps Distance Matrix API数据。“
请务必结帐: https : //developers.google.com/maps/documentation/distance-matrix/usage-limits和https://developers.google.com/maps/terms for T&C's。

请注意,Mapquest不显示基于实际stream量的驾驶时间。

你可以使用R包gmapsdistance 。 它正是你想要的。 它计算起源和目的地vector之间的距离/时间matrix,并给你一堆选项(运输方式,出发时间,等等)。

伪代码:

  1. DirectionsService.route ({A,B})//在这里获得DirectionsResult

  2. 在DirectionsLeg。// Directions Directions.legs检查距离和持续时间(旅行时间)

    没有航点的路线将包含一个DirectionsLeg,所以这就是你想要的。