2016-04-19 11 views
-1

私のプロジェクトでは、マップ内をクリックするたびに、xとyのテキストを入力するテキストボックスを入力したいと思います。私はこの本標準コードで私の画面上に表示座標を持っている: openlayer 3のマップから変数を取得する

var mousePositionControl = new ol.control.MousePosition({ 
    className: 'custom-mouse-position', 
    target: document.getElementById('location'), 
    coordinateFormat: ol.coordinate.createStringXY(5), 
    undefinedHTML: ' ' 
    }); 

はそう私は考えた:私はxの変数としてmousePositionControlを使用し、y座標場合、私はテキストボックスでこれを取得します。だから私はこれを試してみました:

map.on('click', function() { 
document.getElementById("coördinates").value = mousePositionControl; 
}); 

が、私は、テキストボックスに取得結果がこれです:[オブジェクトのオブジェクト]

は、誰かがこの問題で私を助けることはできますか?

+0

文字列表現は、 'ol.control.MousePosition'は「[オブジェクトのオブジェクト]」ので、コードはあなたがすることを求めているまさにありません。 'click'ハンドラは、既にクリックされたピクセルの座標を含む' event'オブジェクトを受け取りますので、コントロールを必要としません。 – kryger

+0

は 'x'と' y'を示す 'location'要素です。要素 'coördinates'の' x'と 'y'をもう一度取得する必要があるのはなぜですか? – Nurlan

+0

補足として、 "coördinates"と "cooperate"は英語で "coordinate"と "cooperate"と書かれています。 –

答えて

-1

私はそれを自分で考え出しました。私は完全な要素を求めてストライプして置き換えたので、私は得たものを得ました。

コード:型のオブジェクトの

map.on('click', function() { 
    var show = document.getElementById("location").innerHTML; 
    var clean = show.replace('<div class="custom-mouse-position">', ""); 
    var clean_again = clean.replace('</div>', ""); 
    var split = clean_again.split(','); 
}); 
+0

htmlコードを文字列として処理しないでください。それはきれいではなく、一部のブラウザや将来のバージョンでは失敗する可能性があります。代わりに、DOMを使用して必要な要素を選択することをお勧めします。 –

-1
map.on('click', function(evt){ 
    document.getElementById('coördinates').innerHTML = evt.coordinate.join(", "); 
}); 
+1

これがなぜこの問題を解決するかについてのいくつかのコメントはこれをはるかに良い答えにするでしょう – planetmaker

関連する問題