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

时间:2009-06-25 09:30:55

标签: api google-maps travel-time

我使用google maps api看到的所有示例似乎都显示了某种地图。当您要求从A到B进入某个站点的道路描述时,我想通过他们为您提供的汽车估计行程时间数据。而且只有那些数据。是否可以不为最终访问者加载地图?

7 个答案:

答案 0 :(得分:23)

以上回答处于 Google API terms of service 违规行为,因此不正确即可。

Google Maps API仅允许您计算旅行时间,如果它是针对向用户显示的Google地图引用的。

如果您未向服务的最终用户显示Google地图,则无法使用该API。

<强> 更新

此处的任何答案都没有显示在Google地图上映射的最终结果,这违反了上述服务条款,最终也是错误的。

答案 1 :(得分:20)

是的,这绝对可以使用API​​。您可以构建一个没有地图或方向div的GDirections对象。您可以从A到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";
        });

您可以找到whole example hereJavaScript here。您可以查看Google Maps Documentation以获取有关您可以为GDirections对象提供的选项的更多信息(例如步行距离等...)。您还应该收听错误事件以进行地理编码失败。

答案 2 :(得分:19)

有关记录:此时(2015年),GDirections,GLatLng,GEvent等已弃用


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

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

1)google.maps.DirectionsService类允许LatLng和字符串值提供其原始和目标属性。
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 + ')' );
    }
} );

答案 3 :(得分:5)

来自 google.maps.DirectionsRenderer

使用距离:

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

持续时间使用:

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

答案 4 :(得分:3)

  1. 先去这里: https://developers.google.com/maps/documentation/distance-matrix/start 您需要:创建或选择项目,启用API并获取API密钥 只需点击&#34;获取密钥&#34;假设你有一个Gmail帐户,你可以把所有事情都搞定(或者在登录你的gmail帐户之后转到console.developer.google.com,然后创建一个应用程序,然后启用API,并在那里获得API密钥。)< / LI>
  2. 现在转到https://developers.google.com/maps/documentation/distance-matrix/intro并按照详细说明操作。有几点需要注意:使用这些: &amp; mode = driving&amp; departure_time = now&amp; traffic_model =悲观,如果您希望当前流量影响您的驾驶时间。我也用过&amp; units = imperial
  3. 仅当满足以下所有条件时,才会返回流量持续时间:

    请求包含departure_time参数。 该请求包含有效的API密钥或有效的Google Maps API Premium Plan客户端ID和签名。 交通条件可用于所请求的路线。 mode参数设置为driving。

    是的,您必须显示带有驱动时间的Google地图“Google Maps Distance Matrix API只能与在Google地图上显示结果一起使用。禁止在不显示Google地图的情况下使用Google Maps Distance Matrix API数据。“ 一定要结帐: https://developers.google.com/maps/documentation/distance-matrix/usage-limitshttps://developers.google.com/maps/terms 对于T&amp; C&#39。

    请注意,Mapquest不会根据实际流量显示行车时间。

答案 5 :(得分:2)

我在这方面已经挣扎了很长时间但是终于通过AJAX调用解决了它(确保你已经链接到jQuery来执行此操作)。

  <ul>
        <li class="myLiShared">
            <img src="../images2/c++.png" />
            <h2>C++ for absolute begginers</h2>

            <h3>John Purcell</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/JS.jpg" />
            <h2>JavaScript From Scratch</h2>

            <h3>Derek Banas</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/cSharp.png" />
            <h2>C# From Begginer To Advanced</h2>

            <h3>Derek Banas</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/PHP.png" />
            <h2>PhP and MySQL For Beginners</h2>

            <h3>Derek Banas</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/c++.png" />
            <h2>C++ for absolute begginers</h2>

            <h3>John Purcell</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/JS.jpg" />
            <h2>JavaScript From Scratch</h2>

            <h3>Derek Banas</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/cSharp.png" />
            <h2>C# From Begginer To Advanced</h2>

            <h3>Derek Banas</h3>
        </li>
        <li class="myLiShared">
            <img src="../images2/PHP.png" />
            <h2>PhP and MySQL For Beginners</h2>

            <h3>Derek Banas</h3>
        </li>
    </ul>

答案 6 :(得分:-3)

伪代码:

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

  2. 检查来自DirectionsResult.legs的DirectionsLeg .//的距离和持续时间(旅行时间)

    没有路标的路线将包含一个DirectionsLeg,这就是您想要的。