GoogleマップAPIを使用して出会ったすべての例は、何らかのマップを表示しているようです。 AからBへの道路の説明をサイトに要求するときに、車が提供する推定旅行時間に関するデータを組み込みたいと思います。そして、そのデータのみ。エンドビジター用のマップをロードしなくても可能ですか?
うん、これは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 ();
次に、ロードリクエストを実行して方向を解決します(開始地点と終了地点として2つの緯度と経度を使用しましたが、ここでも住所を使用できます)。
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 を見つけることができます。 GDirectionsオブジェクトに指定できるオプションの詳細については、 Google Maps Documentation を確認してください(徒歩距離など)。ジオコーディングの失敗については、errorイベントもリッスンする必要があります。
上記の回答は、violationofGoogle API利用規約、したがって、incorrect。
Google Maps APIでは、ユーザーに表示されるGoogleマップに対して参照されている場合にのみ、移動時間を計算できます。
サービスのエンドユーザーにGoogleマップを表示しないと、APIを使用できません。
更新:
Googleマップにマッピングされた最終結果を示さないここでの回答は、前述の利用規約に違反しており、最終的には間違っています。
レコードの場合:この時点(2015年)で、GDirections、GLatLng、GEventなどはdeprecated。
google.maps.DirectionsService class (Google Maps JavaScript API V3)を使用できます
次のスニペットでは、場所とターゲットは緯度と経度の座標を含むオブジェクトです。
1)google.maps.DirectionsServiceクラスは、LatLng値と文字列値の両方を許可して、OriginプロパティとDestinationプロパティをフィードします。
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 + ')' );
}
} );
from google.maps.DirectionsRenderer
使用による距離:
directionsDisplay.directions.routes[0].legs[0].distance.text
使用による期間:
directionsDisplay.directions.routes[0].legs[0].duration.text
トラフィックの継続時間は、次のすべてに該当する場合にのみ返されます。
要求には、department_timeパラメーターが含まれています。リクエストには、有効なAPIキー、または有効なGoogle Maps APIプレミアムプランのクライアントIDと署名が含まれています。要求されたルートの交通状況が利用可能です。モードパラメータは、ドライビングに設定されます。
はい、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&Cの場合。
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);
});