ajaxリクエストの外部にグローバル変数を作成しました。 var pos = [];
私のAPIから来る特定の "仕事"の緯度と経度の情報を収集します。 "Jobs"には、各ジョブのデータ配列(var Jobs = [];
)を収集するためのajaxリクエストの外側にあるグローバル変数もあります。 Ajaxリクエストの中で、汎用のJobs = data
を使用して、成功時にリクエストで収集されるデータに変数値を設定しました(success: function (data) {Jobs = data; ...
)。次に、Jobs.forEach
ループを使用して各ジョブを反復処理します。 pos
変数には、ジョブごとに作成されたマーカーのリーフレットメソッド.getLatLng
を使用して値が与えられます。私の問題は、私がpos
という変数(私はconsole.log(pos);
を使ってテストしています)をforEachループの外で呼び出そうとすると、最後のインスタンスだけを吐き出すことになります。私が間違っていることに関する提案はありますか?私の単純化されたコードは以下の通りです。注:別のリクエストの中でpos
を呼び出そうとしていますが、グローバルJobs
変数で正常に動作します。グローバル変数は、ループ内の最後のインスタンスの値のみを返します。
var grid = L.geoJson();
var Jobs = {};
var pos = [];
//var control = L.control.layers(grid).addTo(map);
// This is the ajax request for the jobs data
$.ajax({
type: 'GET',
url: url,
timeout: 8000,
crossDomain: true,
dataType: 'json',
data: Jobs,
...
//Renders data to view
success: function (data) {
Jobs = data;
Jobs.forEach(function (value) {
console.log (pos);
...
var latitude = value.latitude;
var longitude = value.longitude;
...
var marker = L.marker([value.latitude, value.longitude]).addTo(map);
pos = marker.getLatLng();
...
console.log (pos);
});
// Fetch the file data making the grid
$.getJSON('./grid.geojson', function (data) {
// Assign the results to the geojsonData variable
console.log(Jobs);
console.log(pos);
、ありがとう!私は 'grid.getBounds()。contains(pos)'でそれを使って、ポイントがグリッド内にあるかどうか調べることができます。結果を格納する配列を持つ別の変数を作成しました。今私はちょうどこの情報で何をすべきかを理解する必要があります! – jcbridwe
よかった、うれしかったよ! :) – iamalismith