2012-03-24 40 views
7

Dường như bản vẽ đa giác không đồng bộ trong google maps api v3. Cố gắng nhấp vào nút "Load" trong ví dụ này:Xử lý khi vẽ đa giác hoàn tất trong bản đồ google api v3

http://jsfiddle.net/rmXXF/

dòng chữ "Done" được viết sớm hơn nhiều so với lưới được vẽ! Dường như bản vẽ của lưới hình chữ nhật là không đồng bộ. Tôi muốn văn bản XONG hiển thị SAU lưới được vẽ! Có một số trình xử lý sự kiện cho việc này không?

Phần quan trọng của mã là chức năng action():

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

Lưu ý rằng bản đồ 'nhàn rỗi' sự kiện không hoạt động cho điều này, bởi vì bản đồ không được di chuyển/phóng to. Bạn có thể thử tại đây: http://jsfiddle.net/92Hxj/

Có thể nó có gì đó không làm với bản đồ google nhưng với hiển thị trình duyệt? Trong mọi trường hợp, một số xử lý sự kiện cho điều này nên có mặt.

+0

Thật không may là không có. Trường hợp sử dụng là gì? –

+1

@ broady, trường hợp sử dụng gần như chính xác những gì bạn thấy trong ví dụ, nhưng các ô vuông được nạp bằng ajax. Tôi đang đặt chỉ báo trạng thái thành "LOADING ..." trước yêu cầu ajax và đặt lại thành "XONG" sau khi tôi nhận dữ liệu và hiển thị chúng ... nhưng nó không hoạt động - chỉ báo trạng thái cho biết "XONG "và người dùng sẽ xem vài giây tại một bản đồ trống. – TMS

Trả lời

8

Bằng cách kích hoạt một recentering nhỏ của bản đồ sau khi vẽ tất cả các đa giác này sẽ được thêm vào hàng đợi sự kiện bản đồ google nội bộ giống như có thể được nhìn thấy trong ví dụ này: 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

Nice hack David, cảm ơn! – TMS

+2

Rất hay, David. Tôi muốn thực hiện một thay đổi - sử dụng addListenerOnce –

+0

Công việc tuyệt vời. –

3

Bạn nên sử dụng lớp phủ và nghe sự kiện 'rectanglecomplete' của trình quản lý bản vẽ. Tôi có thể viết mã ví dụ sau bữa trưa.

David nói đúng. Tôi đã đọc sai tài liệu. Xin lỗi. Anh ta sẽ nhận được tiền thưởng.

+0

Wow, trông giống như thứ tôi đang tìm kiếm. Một ví dụ sẽ là tuyệt vời! – TMS

+0

Tiền thưởng cần được thưởng sớm ... bạn có cơ hội, nếu câu trả lời của bạn hoàn tất. :-) – TMS

+0

Bạn có 20 giờ. – TMS

Các vấn đề liên quan