2012-04-05 6 views
0

私は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.Varesponse.ug.origin.Uaは、しかし、それは時々に変わりますレスポンス.ug.origin.Xaおよびレスポンス.ug.origin.Ya

随時変更される理由はありますか?どのようにその問題に対処するアイデアですか?

答えて

0

これらの内部プロパティにアクセスする必要はありません。これらのプロパティはAPIの一部ではないため、変更される可能性があります。

使用仕様内で定義されたプロパティのみ/メソッド、応答が提供するすべてのデータがそれらを介してアクセス可能な、

例:それとは別に

response.routes[0].legs[0].start_location 
//returns latLng of the origin 

あなたの記述の音あなたがよく使うべきであるかのようにDistanceMatrixRequest

+0

私は同じでしたが、response.routes [0] .legs [0] .start_locationと同じではありませんでした私が与えた起源。私は起源が途中でポイントである必要はありませんが、start_locationはポイントであるからです。私はDistancematrixrequestにしようとしますが、実際の問題はここにあります。私は何かのために(非同期の)リモートサービスを要求しますが、送信された要求を示す応答の情報を送信しません。 – hevi

+0

directionsService.routeに渡されたリクエストオブジェクトにアクセスしたいときは、どうしたらいいですか?クロージャーを作成したので、そこにあります。コールバック内でクロージャーにアクセスできるようになっています: 'minDistanceIndex = locationsMap [request.origin.lat()、request.origin.lng()]' –

+0

scopeとdirectionsService.routeは非同期で動作します。これは、 'minDistanceIndex = locationsMap [request.origin.lat()、request.origin.lng()]'リクエストが意味を持たないことを意味します。 – hevi

関連する問題