我使用google maps api看到的所有示例似乎都显示了某种地图。当您要求从A到B进入某个站点的道路描述时,我想通过他们为您提供的汽车估计行程时间数据。而且只有那些数据。是否可以不为最终访问者加载地图?
答案 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 here和JavaScript 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)
仅当满足以下所有条件时,才会返回流量持续时间:
请求包含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-limits 和 https://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)
伪代码:
DirectionsService .route({A,B})//在这里获取DirectionsResult
检查来自DirectionsResult.legs的DirectionsLeg .//的距离和持续时间(旅行时间)
没有路标的路线将包含一个DirectionsLeg,这就是您想要的。