2012-05-23 25 views

Trả lời

3

một cách để thực hiện điều đó là để đăng ký một sự kiện về sự kiện "zoomend" trên bản đồ của bạn với một cái gì đó giống như

map.events.register(type, obj, listener); 

Bạn có thể tìm thêm thông tin ở đó: http://dev.openlayers.org/releases/OpenLayers-2.11/doc/apidocs/files/OpenLayers/Map-js.html

Có lẽ bạn cũng nên tải cả của kml của bạn và sau đó ẩn/hiển thị lớp chính xác phụ thuộc vào mức thu phóng.

+0

Tôi muốn mọi thay đổi của thu phóng để làm điều gì đó. Sự kiện mà tôi chèn vào là zoom_changed nhưng nó không hoạt động.Bạn có thể liệt kê tất cả các sự kiện – user1365697

6

Như j_freyre đã đề cập, bạn nên đăng ký một hàm, thay đổi mức độ hiển thị của các lớp KML của bạn thành "zoomend" -event. Trong trường hợp của bạn, nó phải trông giống như thế này:

map.events.register("zoomend", map, zoomChanged); 

zoomChanged() 
{ 
    zoom = map.getZoom(); 
    if (zoom == 3) 
    { 
    kml1.setVisibility (true); 
    kml2.setVisibility (false); 
    } 
    else if (zoom == 4) 
    { 
    kml1.setVisibility (false); 
    kml2.setVisibility (true); 
    } 
} 
+0

Hiệu quả hơn để lưu trữ giá trị 'getZoom' trong một biến như' zoom = map.getZoom(); 'và sau đó kiểm tra nó trên các câu lệnh if như' if (zoom == 3) '. Bằng cách này, bạn sẽ tránh gọi 'getZoom' mỗi lần. – Mahdi

+0

Tôi hoàn toàn đồng ý với bạn và chỉnh sửa câu trả lời của tôi. – ischas

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