Xóa / xóa một tính năng khỏi lớp vectơ OpenLayers


15

Tôi có một lớp OpenLayers với một vài vectơ trên đó. Tôi biết ID tính năng OpenLayers (ví dụ: OpenLayers.Feature.Vector_241) và tôi muốn biết cách xóa tính năng này và chỉ tính năng này?

Tôi đã cân nhắc việc xóa tất cả chúng và sau đó lặp qua một mảng để vẽ lại chúng, nhưng điều này có vẻ hơi không phù hợp và dài dòng.

Tôi đã thử nhiều phiên bản của mã theo dõi:

layer.removeFeatures( featureID );

layer.removeFeatures( [featureID] );

layer.removeFeatures( {feature : featureID });

Vân vân...

Mọi sự giúp đỡ đều được chào đón!

Cảm ơn

C

Câu trả lời:


20

Tôi không nghĩ rằng OpenLayers có khả năng xóa một tính năng bằng cách cung cấp featureID. Có vẻ như nó chỉ có thể xóa một tính năng bằng cách cung cấp một tính năng hoặc một loạt các tính năng:

layer.removeFeatures(featureObject);

Nhưng thay vào đó, bạn có thể định vị tính năng này trước rồi xóa tính năng tìm thấy:

layer.removeFeatures(layer.getFeatureById(featureID));

Hoặc tương tự nếu nó không phải là tính năng OpenLayers mà bạn có, thì

layer.removeFeatures(layer.getFeatureBy('myId', myID));

Tôi thích suy nghĩ! Vấn đề là mặc dù câu lệnh "layer.getFeatureById (FeatureID))" trả về null và do đó, removeFeature () không hoạt động. Tôi 100% rằng tôi có các FeatureID đúng mặc dù .... còn suy nghĩ nào nữa không?
CatchingMonkey

1
Cào đó. Tôi đã sử dụng sai tính năngID. Tôi sử dụng ví dụ thứ hai của bạn và nó hoạt động hoàn hảo. Đẹp quá
CatchingMonkey

5

Điều này làm việc cho tôi:

*layer.removeFeatures(featureObject);*

Nhưng tôi đã có tính năng này như một biến toàn cục, có thể trong các trường hợp khác, bạn nên cố gắng giữ ID tính năng để tìm kiếm để xóa nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.