2014-03-07 3 views
0

Google지도 기반 애플리케이션을 개발 중입니다.지오 코딩을 위해 주소 순서를 유지하십시오.

사용자가 .xls 스프레드 시트 파일을 업로드하여 길 찾기를 계획 할 수 있습니다. 이 파일은 최대 1000 개의 지리적으로 정확한 주소를 가질 수 있습니다.

function geoCodeUploadedAddresses() { 
    for(var i = 0; i< uploadedWaypoints.length; i++) { 
    nokia.places.search.manager.geoCode({ 
    searchTerm : uploadedWaypoints[i], 
    onComplete: onGeocodeComplete 
    }); 
    } 

} 

function onGeocodeComplete(data, requestStatus, requestId) { 
    if (requestStatus == "OK") {   
     console.log(data); 
    } else if(requestStatus == "ERROR") { 
     console.log("error") 
    } 
} 

이의 문제가 있다는 것입니다 : 나는 이러한 주소와 경로를 계획 할 수있을 정확 해요 경우

, 내가 먼저지도 '지오 코딩 서비스 여기서 사용하여, 그들에게 모든 지오 코딩 할 필요가 보낸 순서와 동일한 순서로 주소를 반환하지 않습니다. 예를 들어

, 지오 전에 uploadedWaypoints 배열 :

  1. 1,081 부다페스트 블라 Lujza
  2. 2,119 퍼첼, 라자 빌 모스의 utca
  3. 1,214 부다페스트 센트 학자

tér에 후 tér에 주소를 지오 코딩하는 것은 완전히 임의의 순서로 돌아옵니다.

예 :

  1. 2119 퍼첼, 라자르 빌 모스의 utca
  2. 1081 부다페스트, 블라 하 Lujza tér에
  3. 1214 부다페스트, 센트 임레

그래서 내가 어떻게이 주소 동안의 모든 지오 코딩 할 수 TER 배열에 같은 순서를 유지하고 있습니까?

+0

수 없습니다. 일련의 개별 HTTP 요청을 만들고 있습니다. 응답을 특정 순서대로 되돌릴 수있는 방법이 없습니다. 이를 원래 데이터와 대조하거나 필요에 더 적합한 일괄 API를 찾아야합니다. – kielni

답변

1

jsoncallback 매개 변수를 사용하여 요청을 생성하고 요청마다 동적으로 다른 콜백을 생성하여 수행중인 모든 요청과 일치시킬 수 있습니다.

http://developer.here.com/rest-apis/documentation/geocoder/topics/resource-geocode.html

jsoncallback

XS : - JSON 응답을 포장하는 데 사용되는 사용자 정의 함수의 이름을 지정 문자열

은 설명서를 참조하십시오.

또한 클라이언트 측에서 1000 개의 지오 코딩 작업을 수행해야 할 일이 많으며 시간이 오래 걸릴 수 있습니다. 또한 사용중인 키 유형과 관련된 제한 사항이 있으므로 특정 24 시간 동안 요청할 수있는 제한 사항에 직면 할 수 있습니다.

여기에 엔터프라이즈 용 제안에서 일괄 지오 코딩을 사용하는 것이 더 좋을 수도 있습니다.

+0

감사합니다. 드디어 Batch API를 사용하여 언급했습니다. – PeterInvincible

0

async library은 귀하의 필요에 맞게 보입니다.

다음은 어떻게 구현할 수있는 방법입니다.

var getGeoCode = function(waypoint, callback) { 
    nokia.places.search.manager.geoCode({ 
     searchTerm : waypoint, 
     onComplete: function(data, requestStatus, requestId) { 
         if (requestStatus == "OK") {   
          callback(null, data); 
         } else if(requestStatus == "ERROR") { 
          // You can either call with error to break pending calls or some error value - callback({error : requestStatus}); 
          console.log("error"); 
          callback(null, data); 
         } 
         // You need to callback on other cases too. 
        } 
    }); 
}; 


async.map(uploadedWaypoints, 
      getGeoCode, 
      function(err, results){ 
       // results is now an array of geocodes for each address 
      } 
); 

또한 문서에서 인용 아니오

을 ...이 함수가 병렬 각 항목 반복자 적용 이후 상기 반복기 기능하지만, 순서 완료 것이라는 보장 results 배열은 원래 배열과 동일한 순서로 정렬됩니다.

주문한 결과를 얻는 방법을 보여줍니다. 이상적으로는 대량 지오 코딩 서비스를 조사해야합니다.

HTH.

관련 문제