사용자가 기능 및 특성 특성을 만들고 수정하고 삭제할 수있는 OpenLayers.Layer.Vector 계층이 있습니다. 변경 사항은 "변경 사항 저장"버튼을 누를 때 저장됩니다. 사용자가 새로운 지형지 물을 생성 한 후지도를 확대/축소하면 OpenLayers가 지형지 물의 모든 지형지 물을 제거하고 지오 서버 db에 저장된 지형지 물을 추가합니다. 나는 새로 생성 된 기능에 매달려 "로드 엔드"이벤트에서 레이어에 추가하려고 시도했지만 OpenLayers는 새로운 기능의 기하학을 파괴하여 쓸모가 없습니다. 축소 할 때 OpenLayers가 새로운 기능을 숨기지 않게하려면 어떻게합니까?OpenLayers는 축소 할 때 새로운 기능을 제거/제거합니다.
0
A
답변
-1
필자는 featuresremoved 이벤트를 사용하여 제거 된 모든 기능을 얻은 다음 "삽입"상태인지 확인합니다. 다중 축소시 다중 삽입을 방지하기 위해이 기능을 중간 상태로 지정했습니다. 로드 엔드에서 삽입을 수행하여 상태를 다시 "삽입"으로 변경합니다. 한 번에 하나의 편집 레이어 만 있습니다. 레이어에서 "에 Loadstart는"핸들러, 새로운 기능을 모두 제거하고 계층 "loadend"핸들러에 새를 모두 다시 추가 :
var nuevas_features = null;
....
....
....
....
eventListeners: {
'loadstart': function(evt) {
nuevas_features = null;
},
'featuresremoved' : function(algunfeature) {
nuevas_features = null;
nuevas_features = new Array();
$(algunfeature.features).each(function(index, feature)
{
if(feature.state === 'Insert')
{
var feature_clonada = feature.clone();
feature_clonada.state = "transicion";
nuevas_features.push(feature_clonada);
}
});
},
'loadend': function(evt) {
$(nuevas_features).each(function(index, feature)
{
feature.state = "Insert";
editingLayer.addFeatures(feature);
});
console.log('end');
}
}
는 여기에 내가 현재 사용하고 해결 방법입니다 풍모. OpenLayers는 db imho를 재 쿼리 할 때 INSERT 상태의 지형지 물을 제거해서는 안됩니다. – Hilo
오픈 레이어에 기능을 어떻게 추가합니까? 지도에 추가하는 대신 손으로 그리는 것 같습니다. –
새로운 기능은 레이어에 추가하는 OpenLayers 드로잉 컨트롤을 사용하여 사용자가 그려줍니다. – Hilo