私はjavascript、google方向サービスを利用しています 私は地図上に複数のソースポイントと1つの行き先ポイントを持っています。私は目的地点に最も近いソース点を見つける必要があります。方向サービスが非同期的に動作するので、私はその点を緯度/経度でマップする必要があります。しかし、問題は、方向サービスによって送信される応答形式が変化することです。 Googleの方向サービスから来てGoogleマップ方向サービスは異なる応答形式を送信します
function calcRoute(start, end) {
var request = {
origin:start,
destination:end,
travelMode:google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request,
function (response, status) {
distanceCount++;
if (status == google.maps.DirectionsStatus.OK) {
var dist = computeTotalDistance(response);
console.log(dist);
if (dist < minDistance) {
minDistance = dist;
minDistanceIndex = locationsMap[response.ug.origin.Ua+""+response.ug.origin.Va];
}
if (distanceCount == vl.length) {
drawWay(vl[minDistanceIndex], fsl);
}
}
}
);
}
問題がライン上で発生し
minDistanceIndex = locationsMap[response.ug.origin.Ua+""+response.ug.origin.Va];
response.ug.origin.Vaとresponse.ug.origin.Uaは、しかし、それは時々に変わりますレスポンス.ug.origin.Xaおよびレスポンス.ug.origin.Ya。
随時変更される理由はありますか?どのようにその問題に対処するアイデアですか?
私は同じでしたが、response.routes [0] .legs [0] .start_locationと同じではありませんでした私が与えた起源。私は起源が途中でポイントである必要はありませんが、start_locationはポイントであるからです。私はDistancematrixrequestにしようとしますが、実際の問題はここにあります。私は何かのために(非同期の)リモートサービスを要求しますが、送信された要求を示す応答の情報を送信しません。 – hevi
directionsService.routeに渡されたリクエストオブジェクトにアクセスしたいときは、どうしたらいいですか?クロージャーを作成したので、そこにあります。コールバック内でクロージャーにアクセスできるようになっています: 'minDistanceIndex = locationsMap [request.origin.lat()、request.origin.lng()]' –
scopeとdirectionsService.routeは非同期で動作します。これは、 'minDistanceIndex = locationsMap [request.origin.lat()、request.origin.lng()]'リクエストが意味を持たないことを意味します。 – hevi