저는 Ajax 요청 외부에서 전역 변수를 만들었습니다. var pos = [];
내 api에서 오는 특정 "작업"의 위도 및 경도 정보를 수집합니다. "Jobs"는 각 작업에 대한 데이터 배열 (var Jobs = [];
)을 수집하기 위해 Ajax 요청 외부의 전역 변수를 가지고 있습니다. 아약스 요청 내에서 일반 Jobs = data
을 사용하여 성공시 요청에서 수집되는 데이터에 변수 값을 설정했습니다 (success: function (data) {Jobs = data; ...
). 그런 다음 Jobs.forEach
루프를 사용하여 각 작업을 반복합니다. pos
변수는 각 작업에 대해 만든 마커에서 .getLatLng
전단지 방법을 사용하여 값이 제공됩니다. 제 문제는 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