2012-06-04 37 views
8

Tôi đã một lớp có nhiều điểm đánh dấu có biểu tượng khá lớn, do đó chúng chồng lên nhau. Thông qua danh sách ở phía bên của bản đồ người dùng có thể chọn một điểm đánh dấu và bản đồ sẽ xoay (và phóng to) đến nó. Nhưng nó vẫn sẽ ở phía sau một số nhà sản xuất khác. Làm thế nào để có được một nhà sản xuất cá nhân z-index và thiết lập nó? Tôi sẽ hữu ích để có được chỉ số z được sử dụng cao nhất và chỉ cần thêm một chỉ mục. (giải pháp khác là thêm tổng số điểm đánh dấu vào chỉ mục z)Thay đổi chỉ mục z của điểm đánh dấu trong openlayers

Điểm đánh dấu (hoặc tính năng) nằm trong mảng myLib.features. Bàn điều khiển không hiển thị bất kỳ chức năng loại chỉ mục z nào.

Tôi không thể tìm thấy ví dụ hoặc chức năng api thích hợp cho việc này.

EDIT:

tôi thấy ví dụ này: http://dev.openlayers.org/examples/ordering.html Tôi không thực sự hiểu nó. Bằng cách nào đó tính năng được tạo ra có chỉ số z tiếp theo được đưa ra bởi lớp thông qua somekind của symbolizer. Tôi không có ý tưởng làm thế nào để làm việc này sắp xếp tĩnh thành một năng động.

Trả lời

2

Hãy thử điều này:

Trước hết, hãy chắc chắn bạn đang sử dụng một lớp OpenLayers.Layer.Vector, không phải là một lớp OpenLayers.Layer.Markers. Rõ ràng lớp Markers là tin cũ và tất cả các phát triển mới được thực hiện trong lớp Vector. Nó có nhiều tính năng hơn. (Tôi đã lãng phí một đống thời gian với lớp Markers).

Sau đó, mỗi điểm đánh dấu của bạn cần phải là đối tượng OpenLayers.Feature.Vector. Hàm tạo có ba đối số, phần thứ ba trong số đó được gọi là kiểu. Kiểu là nơi bạn đặt thuộc tính hình ảnh, bóng nền, văn bản di chuột qua và chỉ mục z, có tên thuộc tính là "graphicZIndex". Tôi nghĩ đó là những gì bạn đang tìm kiếm.

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Feature/Vector-js.html#OpenLayers.Feature.Vector.OpenLayers.Feature.Vector.style

Add "cột mốc" của bạn (mà là Vector) để lớp Vector của bạn với addFeatures chức năng. Và chỉ cần bỏ qua đối số "tùy chọn".

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.addFeatures

tôi thấy rằng trang ví dụ quá, và tôi thấy nó khó hiểu quá. Nó đã được thiết lập tất cả các phong cách của các dấu hiệu trong constructor của lớp Vector (như các giá trị mặc định được sử dụng nếu kiểu đánh dấu bị bỏ qua) thay vì hàm tạo của trình đánh dấu. Tôi nghĩ rằng nó có ý nghĩa hơn để thiết lập kiểu đánh dấu trong hàm tạo dấu.

Để thay đổi kiểu theo thời gian thực, hãy lấy một trong các dấu OpenLayers.Feature.Vector của bạn, được gọi là "điểm đánh dấu" và thực hiện việc này. Và chúng ta hãy gọi lớp "Lớp Vector".

marker.style.graphicZIndex = 13; 
layer.redraw(); 
+0

Điều này không hiệu quả nhưng điều này đã làm https://gis.stackexchange.com/a/80574/8280 –

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