我使用 Google Maps API 遇到的所有示例似乎都显示了某种地图。当您要求从 A 到 B 的道路描述时,我想将有关估计的汽车旅行时间的数据合并到站点中。而且只有那个数据。是否可以不为最终访问者加载地图?
6 回答
上述答案违反了Google API 服务条款,因此不正确。
Google Maps API 仅允许您在参考显示给用户的 Google Map 时计算旅行时间。
如果您不向服务的最终用户显示 Google 地图,则无法使用 API。
更新:
这里的任何答案,如果没有显示在谷歌地图上映射的最终结果,都违反了上述服务条款,最终是不正确的。
是的,这绝对可以使用 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);
然后,您需要监听load事件,以便在解决方向后调用getDuration:
GEvent.addListener(directions, "load", function() {
$('log').innerHTML = directions.getDuration ().seconds + " seconds";
});
您可以在此处找到整个示例,并在此处找到 JavaScript。您可以查看Google 地图文档以获取有关您可以为 GDirections 对象提供的选项(如步行距离等)的更多信息。您还应该收听地理编码失败的错误事件。
备案:此时(2015 年)GDirections、GLatLng、GEvent 等已弃用。
您可以使用google.maps.DirectionsService 类(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 + ')' );
}
} );
来自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 您需要:创建或选择一个项目,启用API并获取API密钥只需点击“获取密钥”并假设你有一个 Gmail 帐户,你可以让一切顺利进行(或者在登录到你的 gmail 帐户后转到 console.developer.google.com,创建一个应用程序,启用 API,并在那里获取 API 密钥)。
- 现在转到https://developers.google.com/maps/documentation/distance-matrix/intro并按照详细信息进行操作。需要注意的几件事:如果您希望当前交通影响您的驾驶时间,请使用这些:&mode=driving&departure_time=now&traffic_model=pessimistic。我也用过 &units=imperial
仅当满足以下所有条件时,才会返回流量持续时间:
该请求包括一个离开时间参数。该请求包括有效的 API 密钥或有效的 Google Maps APIs Premium Plan 客户端 ID 和签名。请求路线的交通状况可用。模式参数设置为驱动。
至少从 2019 年 5 月开始,您现在可以在有或没有地图的情况下显示行驶时间。
您可以在 Google 地图上或没有地图的情况下显示距离矩阵 API 结果。如果您想在地图上显示距离矩阵 API 结果,则这些结果必须显示在 Google 地图上。禁止在非 Google 地图的地图上使用距离矩阵 API 数据。
请注意,Mapquest 不会根据实际交通情况显示行驶时间。
我为此苦苦挣扎了很长时间,但最终通过 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);
});