我有一個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