map路徑規劃api - 免費地圖api




使用Google Maps API獲取旅行時間數據 (6)

我使用谷歌地圖api遇到的所有例子似乎都顯示了某種地圖。 當您要求從A到B進入某個站點的道路描述時,我想通過他們為您提供的車輛估計的旅行時間數據。 而且只有那些數據。 是否可以在不為最終訪問者加載地圖的情況下?


  1. 首先訪問: https://developers.google.com/maps/documentation/distance-matrix/starthttps://developers.google.com/maps/documentation/distance-matrix/start您需要:創建或選擇項目,啟用API並獲取API密鑰只需單擊“獲取密鑰”假設你有一個Gmail帳戶,你可以把所有事情都搞定(或者在登錄你的gmail帳戶之後轉到console.developer.google.com,創建一個應用程序,然後啟用API,並在那裡獲得API密鑰)。
  2. 現在轉到https://developers.google.com/maps/documentation/distance-matrix/intro並按照詳細信息進行操作。 有幾點需要注意:使用以下方法:&mode = driving&departure_time = now&traffic_model =悲觀,如果您希望當前流量影響您的駕駛時間。 我也用過&units = imperial

僅當滿足以下所有條件時,才會返回流量持續時間:

該請求包括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/documentation/distance-matrix/usage-limitsdevelopers.google.com/maps/terms for T&C。

請注意,Mapquest不會根據實際流量顯示驅動時間。


記錄 :此時(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

偽代碼:

  1. DirectionsService .route({A,B})//在這裡獲取DirectionsResult

  2. 檢查DirectionsLeg來自DirectionsResult.legs的距離和持續時間(旅行時間)

    沒有航點的航線將包含一個DirectionsLeg,這就是你想要的。



我在這方面掙扎了很長時間但最後用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);

});





travel-time