У меня есть элемент управления OpenLayers, чтобы нарисовать линию на моей карте. Это прекрасно работает. Теперь я добавил форму, в которой отображаются координаты линии. Пользователь должен иметь возможность редактировать там координаты и при отправке формы, строка должна быть обновлена.OpenLayers DrawFeature генерирует новый слой
Проблема в том, что в итоге я вижу две линии. После некоторой отладки я узнал, что, хотя я указываю DrawFeature, какой слой использовать, обработчик создает новый слой под названием «OpenLayers.Handler.Path». Итак, все, что я рисую с помощью мыши, нарисовано на этом, а строка, созданная путем отправки формы, нарисована на «My Layer».
Я следующий код:
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