2017-02-02 14 views
0

Я хочу показать несколько карт на странице, в основном они все одинаковые, за исключением того, что они имеют разные уровни, которые различаются в зависимости от значения параметра.Различные стили слоев в соответствии с переменной

Код, который я написал, показывает слои на всех картах, но стиль всегда принимает последнее значение переменной в цикле. В моем случае всегда принимаю значение 2.

Я хочу знать, где именно моя ошибка, что стиль слоя не соответствует значению цикла.

Часть моего сценария, который я написал это следующим образом

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

 Смежные вопросы

  • Нет связанных вопросов^_^