簡體   English   中英

OpenLayers保存一項功能

[英]OpenLayers save a feature

我正在創建一個可以使用以下代碼編輯的行:

    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());

每條評論更新:

function report(event) {
    console.log(event.feature.geometry.getVertices());
    console.log(event.type, event.feature ? event.feature.id : event.components);
}
lineLayer.events.on({
    "beforefeaturemodified": report,
    "featuremodified": report,
    "afterfeaturemodified": report,
    "vertexmodified": report,
    "sketchmodified": report,
    "sketchstarted": report,
    "sketchcomplete": report
});

直接從dom訪問幾何值可能不是最好的主意。 更好,更容易使用OpenLayers API。

您可以訂閱圖層的featuremodified事件,然后訪問修改后的功能:

lineLayer.events.on({"featuremodified": function(feature){
    console.log(feature.geometry.getVertices());
}});

您也可以收聽其他活動,例如“featureadded”,“featureremoved”等。

希望你明白這個主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM