我在ajax請求之外創建了一個全局變量; var pos = [];
收集來自我api的特定「工作」的經度和緯度信息。 「作業」也具有它自己的全局變量,用於收集每個作業的數據陣列(var Jobs = [];
)。在ajax請求中,我使用通用的Jobs = data
來設置成功(success: function (data) {Jobs = data; ...
)時請求中收集的數據的變量值。然後我使用Jobs.forEach
循環遍歷每個作業。然後通過在爲每個作業創建的標記上使用.getLatLng
Leaflet方法爲pos
變量賦予一個值。我的問題是,當我嘗試在forEach循環外調用pos
變量(我正在使用console.log(pos);
進行測試)時,它只會吐出最後一個實例。任何建議,我做錯了什麼?我的簡化代碼如下。注意:我試圖在另一個請求中調用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