Javascript OpenLayers保存一个功能

Javascript OpenLayers保存一个功能,javascript,openlayers,Javascript,Openlayers,我正在创建一行,可以使用以下代码进行编辑: var line_points = Array(); var lineLayer = new OpenLayers.Layer.Vector(label); this.map.addLayer(lineLayer); this.map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path)); for (

我正在创建一行,可以使用以下代码进行编辑:

    var line_points = Array();
    var lineLayer = new OpenLayers.Layer.Vector(label);
    this.map.addLayer(lineLayer);
    this.map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));

    for ( x in points ) {
        var point = points[x].split(',');
        var lat = parseFloat( point[0] );
        var lon = parseFloat( point[1] );
        line_points[x] = new OpenLayers.Geometry.Point(this.Lon2Merc(lon), this.Lat2Merc(lat));
    }

    var line = new OpenLayers.Geometry.LineString(line_points);
    var lineFeature = new OpenLayers.Feature.Vector(line, null, style);

    lineLayer.addFeatures([lineFeature]);
每当移动或创建一个点来更新一个HTML表单,然后用它来保存数据时,我试图从这个特性中提取纬度和经度。我听说过协议之类的,但我不认为这对我是正确的

有人能给我指一下正确的方向吗

编辑: 我已尝试直接从HTML获取详细信息:

    var x = 0;
    var y = 0;
    $.each(document.getElementById("OpenLayers.Geometry.LineString_195").getAttribute("points").split(','), function(index, value) {
        if(index%2){
            y = value;
            console.log(MercatorToLatLon(x,y).Lat + "," + MercatorToLatLon(x,y).Lon);
        } else {
            x = value;
        }
        //console.log(value);
    });

但这似乎没有给出任何有用的值,也没有我觉得奇怪的特定顺序。

您可以使用
getVertices
操作来检索特征中点的所有最新纬度和经度

因此,每当您想更新html时,请调用以下命令

console.log(lineFeature.geometry.getVertices());
根据评论更新:
功能报告(事件){
log(event.feature.geometry.getVertices());
日志(event.type,event.feature?event.feature.id:event.components);
}
lineLayer.events.on({
“beforefeaturemodified”:报告,
“功能修改”:报告,
“afterfeaturemodified”:报告,
“vertexmodified”:报告,
“sketchmodified”:报告,
“草图开始”:报告,
“草图完成”:报告
});

直接从dom访问几何体值可能不是最好的主意。更好、更易于使用的OpenLayers API

您可以订阅图层的
featuremodified
事件,然后访问修改后的功能:

lineLayer.events.on({"featuremodified": function(feature){
    console.log(feature.geometry.getVertices());
}});
您还可以收听其他事件,例如“featureadded”、“featureremoved”等


希望您能理解。

在我接受之前,是否可以在每次特征几何体发生更改时触发函数?这将失败,因为事件不会返回特征,而是返回包含特征的对象。因此
feature.geometry
将返回未定义的几何体。