2014-01-17 2 views
0

Google의 거리 매트릭스 서비스를 사용하여 점 A에서 점 B, 점 B에서 점 C까지의 주행 거리를 계산하려고합니다.Google지도 거리 매트릭스 요청으로 식별자 전달

매트릭스 시스템이 다른 결과 세트를 결정하도록 설계되었지만 여러 개의 개별 요청을 연속적으로 작성하려고합니다. 그러나 요청을하면 비동기 특성으로 인해 반환 된 시점에 어떤 요청 (A 지점에서 B 지점 또는 B 지점에서 C 지점으로)인지 알 수있는 방법이 없습니다. 특히 처음에 주소를 다시 지정하면됩니다. 따라서 요청을 배열하는 것조차 도움이되지 않습니다. 전송 된 주소가 수신 된 주소와 일치하지 않기 때문입니다.

내 질문은 어떤 요청이 어떤 주소와 일치하는지 추적 할 수 있도록 요청과 함께 식별자를 전달할 수 있습니까?

var service = new google.maps.DistanceMatrixService(); 
      service.getDistanceMatrix(
      { 
       origins: [address1], 
       destinations: [address2], 
       travelMode: google.maps.TravelMode.DRIVING, 
       unitSystem: google.maps.UnitSystem.METRIC, 
       uniqueIdentifier: 1 
      }, someOtherName); 

그러나이 API는 "고유 식별자"필드가 전달되는 좋아하지 않는다 : 나는 다음과 같은 노력했다.

감사합니다.

답변

1

아니요. 그렇게 할 수 없습니다. 그러나 반환 된 results 개체의 식별자를 대신 푸시 할 수 있습니다. 이 예제에서는 코드를 함수와 해당 함수에 대한 호출로 구분하여 식별자를 매개 변수로 함수에 전달하고 결과 개체에 추가 한 다음 콜백에 전달 된 데이터에서 선택합니다.

function getDistance(identifier, callback) { 
    var service = new google.maps.DistanceMatrixService(); 
    service.getDistanceMatrix({ 
    origins: [address1], 
    destinations: [address2], 
    travelMode: google.maps.TravelMode.DRIVING, 
    unitSystem: google.maps.UnitSystem.METRIC 
    }, function (results) { 
    results.identifier = identifier; 
    callback(results); 
    }); 
} 

var identifier = 1; 
getDistance(identifier, function (results) { 
    console.log(results.identifier); // 1 
}); 
+0

고맙습니다. 어제 너무 가까웠지만 중간 함수 (예 : getDistance)를 사용하지 않아서 다음 반복이 실행될 때 식별자가 덮어 쓰여지고있었습니다. 너는 절대 생명의 은인이야! –