2012-03-24 6 views
7

google maps api v3에서는 다각형 드로잉이 비동기식 인 것 같습니다. 이 예에서 "로드"버튼을 클릭하십시오 :구글 맵스 api v3에서 폴리곤 그리기 작업이 완료 될 때의 핸들

http://jsfiddle.net/rmXXF/

텍스트가 훨씬 빨리 격자가 그려진보다 기록 "완료!" 직사각형 그리드 그리기는 비동기식 인 것 같습니다. 그리드가 그려진 후에 텍스트 DONE이 표시되기를 원합니다!이 이벤트 처리기가 있습니까?

코드의 중요한 부분은 기능 action()에 : 맵 이동/확대되지 않기 때문에, '유휴'이벤트가이 작동하지 않습니다지도

polygons = draw_all_squares(map); // draw grid here 
document.getElementById('status').innerHTML = 'DONE'; // displayed 2 seconds 
                 // before the grid! 

참고. 여기에서 시도해 볼 수 있습니다 : http://jsfiddle.net/92Hxj/

어쩌면 Google지도가 아니라 브라우저 렌더링이 필요합니까? 어쨌든이 이벤트 처리기가 있어야합니다. 이 예에서 알 수있는 바와 같이, 동일한 내부 구글지도 이벤트 큐에 추가되는 모든 다각형 그리기 후지도 작은 가운데로 트리거링함으로써

+0

불행히도 없습니다. 유스 케이스 란 무엇입니까? –

+1

@broady, 유스 케이스는 예제에서 보는 것과 거의 동일하지만 사각형에는 아약스가로드됩니다. 아약스 요청 전에 상태 표시기를 "LOADING ..."으로 설정하고 데이터를 가져 와서 렌더링 한 후 다시 설정하십시오.하지만 작동하지 않습니다 - 상태 표시기에 "DONE "사용자는 빈지도에서 몇 초 동안 쳐다 본다. – TMS

답변

8

: http://jsfiddle.net/rmXXF/40/

google.maps.event.addListener(map, 'idle', function() { 
document.getElementById('status').innerHTML = 'DONE'; 
}); 

my_map.setCenter(new google.maps.LatLng(my_map.getCenter().lat(), my_map.getCenter().lng() + .000000001)); 
+0

David, 감사합니다. – TMS

+2

아주 좋아요, 데이빗. 하나의 변경을 만들 것입니다 - addListenerOnce를 사용하십시오. –

+0

훌륭하게 작동합니다. –

3

오버레이를 사용하고 드로잉 관리자의 'rectanglecomplete'이벤트를 수신해야합니다. 나는 점심 식사 후에 예제를 작성할 수 있습니다.

David이 맞습니다. 나는 문서를 잘못 읽었습니다. 사과하십시오. 그는 현상금을 얻어야한다.

+0

와우, 내가 찾고있는 것과 정확히 같습니다. 좋은 예가 될 것입니다! – TMS

+0

현상금은 곧 보상을 받아야합니다 ... 답변이 완료되면 기회가됩니다. :-) – TMS

+0

아직 20 시간이 있습니다. – TMS

관련 문제