私は外側のjsonをリーフレットレイヤーに追加しました。 geojsonの形状/ポリゴンをクリックすると、geojsonの文字列を取り戻したいと思います。これはどうすればいいですか?私はそのレイヤーへの参照を持っていますが、プロパティでgeojsonを取り戻す方法はわかりません。 var
を使用してクリックハンドラ関数内layer
を宣言geojsonオブジェクトをリーフレットに追加する方法は?
var layer = e.layer;
私は外側のjsonをリーフレットレイヤーに追加しました。 geojsonの形状/ポリゴンをクリックすると、geojsonの文字列を取り戻したいと思います。これはどうすればいいですか?私はそのレイヤーへの参照を持っていますが、プロパティでgeojsonを取り戻す方法はわかりません。 var
を使用してクリックハンドラ関数内layer
を宣言geojsonオブジェクトをリーフレットに追加する方法は?
var layer = e.layer;
は、それがローカルになりますので、あなたは、クリックハンドラの外にアクセスすることはできません。 layer
にグローバルにアクセスする場合は、最初に関数の外で宣言するか、var
を使用せずに関数内で宣言するか、global variableとして宣言します。あなたが前にこれらの変数にアクセスしようとするかもしれない他のルーチンを持っている場合は
layer.on('click', function() {
objectOut = layer.toGeoJSON();
textOut = JSON.stringify(objectOut);
});
:次のコードは、2つのグローバル変数、オブジェクトとしてレイヤーのにGeoJSONと1と文字列としてにGeoJSONのものを作成するために、後者の方法を使用しています機能がクリックされた場合は、最初にクリックハンドラの外側に宣言することができます(たとえば、var textOut = 'nothing clicked'
など)。ここでは、この方法を使用した例フィドルです:
「(キーワードを使用して)することなく、関数内で(VAR)宣言varは」これをしないでください。変数を明示的にスコープしていないということは、文字通りJSでできる最悪の事の一つであり、あらゆる種類のバグを引き起こす可能性があります。これは、コードレビューでテーブルを反転させる第2の原因であり、第1の原因は、JSの重いインタビュー(冗談ではなく、冗談ではない)の失敗の原因です。 – technicolorenvy