使用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
- 首先到这里: https : //developers.google.com/maps/documentation/distance-matrix/start您需要:创build或select一个项目,启用API并获取API密钥只需点击“获取密钥”并假设你有一个Gmail帐户,你可以得到一切(或者login到你的gmail帐户后去console.developer.google.com,并创build一个应用程序,并启用API,并获得API密钥)。
- 现在转到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量的驾驶时间。
您在2016年拥有Google Maps Distance Matrix API https://developers.google.com/maps/documentation/distance-matrix/get-api-key#key
你可以使用R包gmapsdistance 。 它正是你想要的。 它计算起源和目的地vector之间的距离/时间matrix,并给你一堆选项(运输方式,出发时间,等等)。
伪代码:
-
DirectionsService.route ({A,B})//在这里获得DirectionsResult
-
在DirectionsLeg。// Directions Directions.legs检查距离和持续时间(旅行时间)
没有航点的路线将包含一个DirectionsLeg,所以这就是你想要的。