지도에 선을 그리는 OpenLayers 컨트롤이 있습니다. 그건 잘 작동합니다. 이제 선의 좌표가 표시되는 양식을 추가했습니다. 사용자는 좌표를 편집 할 수 있어야하며 양식을 제출할 때 행을 업데이트해야합니다.OpenLayers DrawFeature는 새로운 레이어를 생성합니다.
문제는 결국 두 줄이 보입니다. 디버깅을 한 후에 DrawFeature에 사용할 레이어를 지정했지만 핸들러는 "OpenLayers.Handler.Path"라는 새 레이어를 만듭니다. 따라서 마우스로 그려지는 모든 것은 그 위에 그려지며 양식을 제출하여 작성된 선은 "내 레이어"에 그려집니다.
나는 다음과 같은 코드가 있습니다
layer = new OpenLayers.Layer.Vector("My Layer");
geoExtMap.map.addLayer(layer);
Control = {
line: new OpenLayers.Control.DrawFeature(layer,
OpenLayers.Handler.Path, {
callbacks: {
"point": pointHandler,
"done": doneHandler
},
handlerOptions: {
persist: true,
maxVertices: 2,
freehand: false,
layerOptions: {
styleMap: styleMapControls
}
}
})
};
geoExtMap.map.addControl(Control.line);
var points = new Array(
new OpenLayers.Geometry.Point(x1, y1).transform(EPSG, projectData.crs),
new OpenLayers.Geometry.Point(x2, y2).transform(EPSG, projectData.crs)
);
var line = new OpenLayers.Geometry.LineString(points);
var lineFeature = new OpenLayers.Feature.Vector(line, null, sketchSymbolizersControls.Line);
layer.removeAllFeatures();
layer.addFeatures([lineFeature]);
왜 핸들러가 새 레이어를 생성하고 사용하지 않는이 하나를 지정?
설명해 주셔서 감사합니다. 나는 벌써 그런 일이 벌어지고 있다고 생각했지만 확실치 않았습니다. 난 그냥 일시적 라인을 제거하지만 컨트롤을 활성 상태로 유지하는 컨트롤에 대한 버튼을 두 번 토글하여 문제를 해결했습니다. – Matthieu