使用谷歌地图API来获取旅行时间数据[关闭]使用谷歌地图API来获取旅行时间数据[关闭](Using

2019-05-13 19:32发布

我遇到使用谷歌地图API的所有的例子似乎显示地图一个某种形式的。 我想结合有关汽车所估计的行程时间,他们给你当你问从A路描述到B到一个站点的数据。 而且,只有这些数据。 是否有可能无需加载了地图到底访客?

Answer 1:

是的,使用API​​,这是绝对有可能的。 您可以构建一个GDirections对象没有地图或路线股利。 你可以从一个做负荷要求到B,然后调用getDuration方法来获取总行程时间。

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

// 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";
        });

您可以在这里全部例子和这里的JavaScript 。 您可以查看谷歌地图文档有关,你可以给GDirections对象(如步行距离等)的选项更多信息。 你也应该听的地理编码失败的错误事件。



Answer 2:

以上答案违反服务的谷歌API的条款 ,因此, 不正确的

谷歌地图API只允许它是否对谷歌的地图引用显示给用户,你计算出行时间。

您无法使用API​​,如果你不显示谷歌地图服务的最终用户。

更新:

这里的任何答案,这并不表明映射一个谷歌地图上的最终结果,是在违反服务,最终,不正确的上述条款。



Answer 3:

备案 :在这个时候(2015年)GDirections对象,的GLatLng,GEVENT等弃用


您可以使用google.maps.DirectionsService类 (谷歌地图的JavaScript API V3)

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

1)google.maps.DirectionsService类承认经纬度和字符串值两者来养活出发地和目的地的属性。
2)经纬度是在地理坐标的点:纬度和经度。

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 + ')' );
    }
} );


Answer 4:

google.maps.DirectionsRenderer

距离使用:

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

持续使用:

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


Answer 5:

  1. 首先去这里: https://developers.google.com/maps/documentation/distance-matrix/start您需要:创建或选择一个项目,启用API,并得到一个API密钥只需点击“一键搞定”并假设你有一个Gmail帐户,你可以得到一切顺利(或者去console.developer.google.com登录到您的Gmail帐户后,并创建一个应用程序,并启用API,并获得API密钥那里)。
  2. 现在去https://developers.google.com/maps/documentation/distance-matrix/intro和遵循的细节。 几件事情要注意:使用这些:模式=驾驶及DEPARTURE_TIME =现在与traffic_model =悲观,如果你想目前的交通影响您的驱动器的时间。 我还用&单位=帝国

在流量持续时间仅返回如果满足以下所有条件都为真:

该请求包括一个DEPARTURE_TIME参数。 该请求包括有效的API密钥,或者有效的谷歌地图API的高级计划客户ID和签名。 交通条件可用于所请求的路线。 该模式参数设置为驾驶。

是的,你必须显示谷歌地图与驱动时间“的谷歌地图距离矩阵API仅可在配合使用谷歌地图上显示的结果。 禁止使用谷歌地图距离矩阵API数据不显示谷歌地图“。
一定要结帐: https://developers.google.com/maps/documentation/distance-matrix/usage-limits和https://developers.google.com/maps/terms对于T&C公司。

需要注意的是根据实际流量Mapquest服务不显示驱动倍。



Answer 6:

我这个挣扎了很长时间,但最后用AJAX调用(请确保您连接到jQuery来做到这一点),解决了这个问题。

 //Pass parameters to a function so your user can choose their travel 
 locations

 function getCommuteTime(departLocation, arriveLocation) {
   //Put your API call here with the parameters passed into it
   var queryURL = 
   "https://maps.googleapis.com/maps/api/distancematrix/json?
   units=imperial&origins=" + departLocation + "&destinations=" + 
   arriveLocation + "&key=YOUR_API_KEY"

  //Ajax retrieves data from the API
  $.ajax({
  url: queryURL,
  method: "GET"
  }).then(function(response) {

    //Navigate through the given object to the data you want (in this 
     case, commute time)
    var commuteTime = response.rows[0].elements[0].duration.text;

    console.log(commuteTime)
   });

  } 


//This is where your user can give you the data you need
$("#addRoute").on("click", function(event) {

event.preventDefault();

var departLocation = $("#departInput").val().trim();
var arriveLocation = $("#arriveInput").val().trim();

//call the above function
getCommuteTime(departLocation, arriveLocation);
  });


Answer 7:

伪代码:

  1. 为DirectionsService .route({A,B})//这里得到的DirectionsResult

  2. 在检查距离和持续时间(传播时间) 为DirectionsLeg .//from DirectionsResult.legs

    没有任何路标的路线将仅包含一个DirectionsLeg中,所以这就是你想要的。



文章来源: Using Google Maps API to get travel time data [closed]