2011-12-19 19 views
5

Tôi có một bản đồ OpenLayers với một lớp TMS. Đối với mỗi thay đổi thu phóng, bản đồ của tôi tạo ra khoảng 56 yêu cầu cho lát bản đồ (tùy thuộc vào kích thước bản đồ/màn hình). Nếu người dùng nhanh chóng phóng to hoặc thu nhỏ, tất cả các yêu cầu lát bản đồ này sẽ được xếp hàng theo thứ tự và sự hiểu biết của tôi là yêu cầu lát bản đồ từ OpenLayers không được gọi là không đồng bộ. Vì vậy, nếu người dùng phóng to hoặc thu nhỏ nhanh, sẽ có nhiều yêu cầu đối với các ô bản đồ không còn cần thiết nữa và những yêu cầu cần thiết sẽ không tải cho đến khi tất cả các yêu cầu trước đó được thực hiện.Tôi làm cách nào để hủy yêu cầu lát bản đồ nổi bật bằng OpenLayers khi thu phóng thay đổi?

Có cách nào để hủy yêu cầu lát xếp bản đồ đang chờ xử lý khi thay đổi thu phóng không? Nếu không thông qua OpenLayers, có cách nào để hủy bỏ tất cả các yêu cầu đang chờ xử lý tới một URL cụ thể không?

+0

Theo như OPEN LAYER api giải thích, có các sự kiện như KEY UP, KEY DOWN và v.v. Nếu bạn có thể kiểm soát các sự kiện để gửi yêu cầu sau khi khóa được bật lên. Và có một hàm hủy() có thể giúp bạn loại bỏ các yêu cầu chồng chất trước đó. –

+0

Có một lớp được gọi là kiểm soát bạn có thể kiểm tra tại đây http://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Control-js.html#OpenLayers.Control xử lý tất cả điều này. Hy vọng nó giúp. Trân trọng –

Trả lời

2

Update để OpenLayers 2.12 hoặc cao hơn, bởi vì kể từ khi phiên bản này hàng đợi ngói đã được nâng cao và bây giờ sẽ tránh các yêu cầu cũ. Để trích dẫn từ số OpenLayers 2.12 Release Notes:

Mã ốp lát đã được đại tu để tải lát trong lớp lưới là hiện đã được thực hiện trong hàng đợi. Hàng đợi xếp kề cho phép kiểm soát nhiều hơn đối với các yêu cầu được gửi đến máy chủ . Yêu cầu đang chờ xử lý đối với các ô không phải là cần thêm nữa (ví dụ: sau khi phóng to hoặc thu nhỏ), tránh tăng hiệu suất và giảm tải trên máy chủ.

+0

Điều này vẫn hợp lệ? Mã không còn hiện diện trong bản gốc, và dường như đã được thay thế bằng một cái gì đó tương tự; tốt hơn? Tuy nhiên, vấn đề vẫn tồn tại trong các khách hàng của tôi. – relet

1

Khi bạn đã xác định phóng to bằng cách xoay chuột, bạn có thể sử dụng đoạn mã sau để ngăn chặn bốc gạch cho tất cả zoomlevels trung gian:

new OpenLayers.Control.Navigation({ 
    "zoomWheelEnabled": true, 
    "mouseWheelOptions": { 
     "interval": 250, 
     "cumulative": true 
    } 
})