0

このコードを使用して編集できる行を作成しています:

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

しかし、これは有用な値を与えるようには見えず、奇妙に感じる特定の順序でもありません。

4

2 に答える 2

1

dom からジオメトリ値に直接アクセスすることは、おそらく最善の方法ではありません。OpenLayers API の使用がより良く、より簡単になりました。

レイヤーのfeaturemodifiedイベントをサブスクライブしてから、変更された機能にアクセスできます。

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

「featureadded」、「featureremoved」など、他のイベントもリッスンできます。

アイデアが得られることを願っています。

于 2012-04-13T15:08:46.320 に答える
1

この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
});
于 2012-04-13T13:54:07.440 に答える