2012-04-13 3 views
0

を保存しますそのデータを保存するために使用されるHTMLフォームを更新します。私はプロトコルやものについて聞いたことがありますが、それは私にとって正しいことだとは思わない。OpenLayersを、私はこのコードを使用して編集することができるラインを作成していた特徴

誰かが正しい方向に私を向けることができますか?

EDIT: 私は直接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); 
    }); 

が、これは、任意の有用な値を与えるように見える、と私は奇妙な見つける順不同ではありません。

答えて

1

操作のgetVertices操作を使用して、フィーチャー内のポイントの最新の緯度および経度をすべて取り出すことができます。

htmlを更新する場合は、次のように呼び出してください。コメントあたり

console.log(lineFeature.geometry.getVertices()); 

更新:DOMから直接ジオメトリ値へのアクセス

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

私が受け入れる前に、機能ジオメトリに変更があるたびに機能をトリガすることは可能ですか? – Josh

+0

確かに私の更新を参照してください。私はあなたが 'featuremodified'がほしいかもしれないと思う – capdragon

+0

素敵なもの!乾杯。 – Josh

1

は、おそらく最高のアイデアではありません。 OpenLayers APIを使いやすくて簡単です。

あなたは層のfeaturemodifiedイベントをサブスクライブして、変更機能にアクセスすることができます:あなたはあまりにも他のイベントに耳を傾けることができ

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

を、例えば「featureadded」、「featureremoved」など

はあなたを願っていますアイデアを得る。

+0

イベントが機能を返すのではなく、機能を含むオブジェクトとして失敗することになります。 'feature.geometry'は戻ります。ジオメトリは定義されていません。 – capdragon

関連する問題