Я работаю над проектом с использованием данных Leaflet.js и geoJson.Я делаю карту хороплета и пытаюсь передать результаты одной функции в другую.Я не думаю, что этот сценарий уникален для Leaflet, и я думаю, что просто спотыкаюсь, когда речь идет о передаче результатов одной функции в качестве параметра другой функции.
У меня есть функция, которая стилизует страны вкарта основана на значениях их ВВП, извлеченных из API:
function getColor(d) {
return d > 1000000 ? '#005824' :
d > 500000 ? '#238b45' :
d > 200000 ? '#41ae76' :
d > 100000 ? '#66c2a4' :
d > 50000 ? '#99d8c9' :
d > 20000 ? '#ccece6' :
d > 15000 ? '#edf8fb':
'#fff'
}
Эта функция вызывается этой второй функцией:
function style(feature) {
return {
fillColor: getColor(100000),
weight: 2,
opacity: 1,
color: 'white',
//dashArray: '3',
fillOpacity: 0.7,
stroke: true,
weight: .5,
fill: true,
clickable: true
};
}
Как вы можете видеть, в настоящее время 100000 жестко закодировано какПараметр функции getColor.Я хотел бы изменить это так, чтобы данные из API передавались в getColor, а не в это жестко закодированное значение.
У меня есть данные о ВВП, извлекаемые из API, и я могу console.log их с этой функцией:
function getGDP(gdp) {
for(var i = 0; i < countriesData.features.length; i++) {
console.log(countriesData.features[i].properties.name + ' ' + countriesData.features[i].properties.gdp_md_est);
return countriesData.features[i].properties.gdp_md_est;
}
}
Как передать результаты функции getGDP () в функцию getColor () внутри функции style ()?
Должно ли это включать замыкания?Если так, как я могу использовать закрытие для этого?Я не верю, что эта проблема является исключительной для Leaflet или этого проекта, я думаю, что у меня просто возникают проблемы, когда я думаю, как передать возвращаемое значение одной функции другой функции, которая вложена в третью функцию.
Функция getColor должна выполнять итерацию по элементу countryData.features [i] .properties.gdp_md_est .
Будет что-то вроде этой работы:
function style(feature) {
return {
//fillColor: getColor(100000),
fillColor: getColor(function(d) {
for(var i = 0; i < countriesData.features.length; i++) {
var data = countriesData.features[i].properties.gdp_md_est;
return data;
}
}),
weight: 2,
opacity: 1,
color: 'white',
//dashArray: '3',
fillOpacity: 0.7,
stroke: true,
weight: .5,
fill: true,
clickable: true
};
}