OpenLayers 3 (v3.20)을 사용하고 있습니다. 내가 원하는 것은 특정 레이어에서 모든 피쳐를 제거하는 것입니다. 나는 거기에 clear 방법이며 설명서를 말한다 그소스 지우기 OpenLayers 3의 버그
분명 (opt_fast)
제거 소스에서 모든 기능을 참조하십시오. 내가 지금처럼 내 레이어 소스에 적용 그러나
: 나는 깜짝 참조
layer.getSource().clear();
(기능 제거) 및 기능을 다시 재로드되도록 그때는 서버 요청을 참조하십시오. 따라서 문서가 불완전하거나 버그가 있습니다.
features = source.getFeatures();
for (i = 0; i < features.length; i += 1) {
source.removeFeature(features[i]);
}
를하지만 정말 이상한 일 :
I는 또한 같은 기능을 제거하기 위해 노력했다. 예를 들어 4 가지 기능이있는 경우 한 번 루프하면 두 개의 기능 만 제거되고 두 번 반복하면 한 가지 추가 기능이 제거됩니다. 결국 모든 기능을 제거하기 위해 3 번 반복해야합니다 (DRY가 아님). 정말 궁금합니다. 왜 그런가요? 어떻게 고칠 수 있습니까? 감사!
당신이 살펴 색인에 의한 기능과 번호 1을 제거한 다음 번호 2를 삭제하면 새로운 번호 1이됩니다. 따라서 각 항목을 건너 뛰면 하나만 건너 뜁니다. 즉, 절반 만 제거됩니다. 이 문제를 해결하려면 루프를 반대로하고 대신 for (var i = features.length -1; i> = 0; i -)를 실행하십시오. –
@ Karl-Johan Sjögren. 좋은 충고! 감사합니다! – Jacobian
'layer.clear()'는 지워진 후에 맵 레이어가 다시로드되도록합니다. 이 문제를 해결하는 방법은'.clear()'를 사용할 때 플래그를 설정하면 재 로딩을 우회 할 수있는 벡터 로더 함수를 사용하는 것입니다. – GoinOff