2017-02-02 1 views
0

페이지에 몇 개의지도를 표시하고 싶지만 기본적으로 매개 변수 값에 따라 다른 레이어가 있다는 점을 제외하면 모두 동일합니다.변수에 따라 다른 레이어 스타일

내가 작성한 코드는 모든지도에 레이어를 표시하지만 스타일은 항상 루프에서 변수의 마지막 값을 가져옵니다. 제 경우에는 항상 2의 값을 취합니다.

레이어의 스타일이 루프 값에 따라 다르지 않은 부분을 정확히 알고 싶습니다.

내가 쓴 내 스크립트의 부분은 당신이 기대하는대로 스타일 기능은 for 루프에서 실행되지 않습니다

for (variable = 0 ; variable <= 2 ; variable++){ 
    vectorLayers[variable] = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: '/myLocation/myFiles', 
     format: new ol.format.GeoJSON() 
    }), 
    style: function(feature) { 
     id = feature.get('reading'+variable); 
     parameter = id[1]; 
     fill.setColor(
     parameter >= 0 && paramter < 0.10 ? lightBlue: 
     ...); 
     return style; 
     } 
    }); 

답변

1

을 다음과 같습니다. for 루프는 먼저 모든 레이어를 생성 한 다음 스타일 기능이 각 레이어의 각 기능에 대해 호출됩니다. 왜 변수 값이 항상 2가 될지. 디버그를주의 깊게 살펴보십시오.

편집 1 : 벡터 레이어를 만들고 루프 내에서 호출하여 값이 올바르게 유지 될 수 있도록 변수 값을 전달하는 메서드를 작성합니다.

for (variable = 0 ; variable <= 2 ; variable++){ 
    vectorLayers[variable] = createVectorLayer(variable); 
} 

function createVectorLayer(variable) { 
    var layer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: '/myLocation/myFiles', 
     format: new ol.format.GeoJSON() 
    }), 
    style: function(feature) { 
     id = feature.get('reading'+variable); 
     parameter = id[1]; 
     fill.setColor(
     parameter >= 0 && paramter < 0.10 ? lightBlue: 
     ...); 
     return style; 
     } 
    }); 
    return layer; 
} 
+0

답장을 보내 주셔서 감사합니다. 나는 3 개의 다른 함수를 만들려고 시도하여 이것을 알아 차렸는데, 각각은 루프를 통해 스타일을 반환했다. 그게 유일한 방법입니다. 그러나 나는 너무 많은 함수를 만드는 것을 피하고자했다. 나는 그것이 실용적이라고 생각하지 않는다. 이 문제를 해결할 생각이 있습니까? – philippos

+0

작업 코드를 포함하도록 답변을 편집했습니다. –

+0

고마워요! 코드 편집으로 문제를 해결하고 내가 원하는 것을 얻을 수있었습니다. – philippos

관련 문제