2010-08-23 2 views
2

Google App Engine에서 실행되고 데이터 저장소에 정보를 저장하는 Spring MVC 3 앱 (JSP 사용)이 있습니다. Google Maps API v3을 사용하여 도형 그리기, 색칠 등의 작업을 통해지도의 일부 데이터를 투영합니다. 내 데이터베이스는 수백만 개의 항목을 잠재적으로 보유합니다.데이터 저장소에서 데이터를 비동기 적으로 가져 와서지도를 그립니다.

프로젝트에 남은 데이터베이스 항목이 없어 질 때까지 데이터 저장소에서 데이터를 가져 와서지도에 투영하는 것이 가장 좋은 방법인지 궁금합니다. 나는 30 초 제한을 치는 것을 피하기 위해서 (그리고 DeadlineExceededException을 얻는 것) 좋은 경험을 위해서 이것을 할 필요가있다.

GWT를 사용해 볼 가치가 있습니까?

조언이 도움이 될 것입니다.

감사합니다.

답변

0

당신은 여기에 설명 된 매김 기술과 유사한 커서를 사용할 수 있습니다

Pagination in Google App Engine with Java

때지도로드와 페이지가 빈 커서 매개 변수를 사용하여 Ajax 요청을 할 수 있습니다. 요청 핸들러는 적은 수의 엔티티를 가져온 다음이를 포함하는 응답과 커서 (엔티티가 남아있는 경우)를 리턴합니다.

클라이언트 자바 스크립트에서지도에 항목을 표시 한 후 커서에 응답이 있으면 커서를 인자로 사용하여 새로운 요청을 시작합니다. 커서가 제공된 경우 요청 핸들러에서 조회를 작성할 때이를 사용하십시오.

이렇게하면 모든 항목을 가져 와서지도에 표시 할 때까지 AJAX 요청의 연속 루프가 설정됩니다.

업데이트 :

당신은 JSON의이 같은 반환하는 서비스를 쓸 수있다 : 그래서

{ 
    items: 
    [ 
     { lat: 1.23, lon: 3.45, abc = 'def' }, 
     { lat: 2.34, lon: 4.56, abc = 'ghi' } 
    ], 
    cursor: '1234abcd' 
} 

, 그것은 위도/경도와 어떤 다른 정보는 항목별로 필요가있는 항목의 배열을 (포함)뿐만 아니라 커서 (마지막 엔터티를 가져 왔을 때 null이 됨) 내가 생각했던 것 같은 소리 그,

$(document).ready(function() 
{ 
    // first you may need to initialise the map - then start fetching items 
    fetchItems(null); 
}); 

function fetchItems(cursor) 
{ 
    // build the url to request the items - include the cursor as an argument 
    // if one is specified 
    var url = "/path/getitems"; 
    if (cursor != null) 
     url += "?cursor=" + cursor; 

    // start the ajax request 
    $.ajax({ 
     url: url, 
     dataType: 'json', 
     success: function(response) 
     { 
      // now handle the response - first loop over the items 
      for (i in response.items) 
      { 
       var item = response.items[i]; 
       // add something to the map using item.lat, item.lon, etc 
      } 

      // if there is a cursor in the response then there are more items, 
      // so start fetching them 
      if (response.cursor != null) 
       fetchItems(response.cursor); 
     }}); 
} 
+0

감사 :

그런 다음, 클라이언트 측에서 나는 아약스 호출, 이런 식으로 뭔가를 할 jQueryajax 기능을 사용하는 것이 좋습니다 것입니다. 몇 가지 코드를 제공 할 수 있습니까? 이전에 AJAX를 사용해 본 적이 없으므로 나를 시작하게하는 예가 있습니다. – cxk

+0

@cxk : 예제 코드로 응답을 업데이트했습니다. –

관련 문제