2016-08-11 2 views
0

저는 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); 

답변

4

당신은 pos 변수에 새로운 마커마다 덮어 쓰기됩니다. pos = marker.getLatLng();

가 대신 배열에 새 값을 .push 필요,이 다음 배열

pos.push(marker.getLatLng()); //['marker1'] 

에 루프가 실행은 다음 마커

추가됩니다 다음 번에 각각의 새로운 값을 추가합니다 완벽하게 작동
pos.push(marker.getLatLng()); //['marker1', 'marker2'] 

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/push

+0

, 감사합니다! 그런 다음 grid.getBounds(). contains (pos)'에서이를 사용하여 점이 격자 안에 있는지 알아볼 수 있습니다. 나는 결과를 저장하기 위해 배열을 가진 다른 열린 변수를 만들었다. 이제 나는이 정보로 무엇을해야하는지 알아야합니다! – jcbridwe

+0

위대한, 다행 그것은 도움이! :) – iamalismith

관련 문제