Javascript 传单.js choropleth示例-基于单独的数据文件更新颜色

Javascript 传单.js choropleth示例-基于单独的数据文件更新颜色,javascript,leaflet,Javascript,Leaflet,这将基于geoJSON文件密度值指定多边形颜色 function getColor(d) { return d > 1000 ? '#800026' : d > 500 ? '#BD0026' : d > 200 ? '#E31A1C' : d > 100 ? '#FC4E2A' : d > 50 ? '#FD8D3C' : d >

这将基于geoJSON文件密度值指定多边形颜色

function getColor(d) {
    return d > 1000 ? '#800026' :
           d > 500  ? '#BD0026' :
           d > 200  ? '#E31A1C' :
           d > 100  ? '#FC4E2A' :
           d > 50   ? '#FD8D3C' :
           d > 20   ? '#FEB24C' :
           d > 10   ? '#FED976' :
                      '#FFEDA0';
}
这将在函数stylefeature中更新每个多边形的颜色

这种新样式将添加到地图中

L.geoJson(statesData, {style: style}).addTo(map);
然而,在我的情况下,我的示例statesData geoJSON文件的等效文件中没有密度值

相反,我将密度值放在一个单独的数据文件中,用于创建新阵列。此数组具有状态名称值和密度值

var my_array = [
    ['name': 'alabama', 'density': 59], 
    ['name': 'alaska', 'density': 30], 
    etc 
]
问题是如何将geoJSON文件和单独的数据文件中的名称字符串值关联起来,以便将关联的密度值转换为函数stylefeature以更改多边形颜色

这可能不一定是一个传单.js问题,但可能是一个一般的Javascript“如何”问题

到目前为止,我可以循环使用我的_数组,并使用名称和颜色值创建一个新数组

color_array = []
for(var i=0; i < my_array.length; i++) {
   color_array.push([my_array[i][0] + ', ' +  getColor(my_array[i][1])]);
}
现在,如何将这个新的颜色数组与函数stylefeature一起使用,以便为每个名称正确设置颜色

在SQL中,我将对名称进行连接,并将名称和相关的密度值提供给getColor函数,输出为名称、密度和颜色


如何在javascript中实现这一点?

除非出于性能原因需要缓存颜色数组,否则您可能可以跳过前面创建颜色数组的步骤

只要这样做:

变量my_数组=[{ “姓名”:“阿拉巴马州”, “密度”:59 }, { '姓名':'阿拉斯加', “密度”:30 }]; 函数getColordensity{ 如果密度>30,则返回“蓝色”; 返回“红色”; } 函数getStateColorstateName{ 颜色变异; 对于变量i=0;ialertalabama=+getStateColor'alabama';您甚至可以先将my_数组转换为哈希/字典,这样就可以直接将状态名转换为密度或颜色。我们可以做很多事情来简化和优化代码。有时很难知道在何处划清界限,因此通常尝试将重点放在核心问题上,在这种情况下,这表明用于确定填充颜色的数据不需要完全来自特征属性。因此,教学方法非常重要:-是的,教学方法适用于此处:好的,我明白了,getStateColor函数是连接查询,my_数组[i]。name==stateName是where子句。我做了很多SQL和一些VBA、PHP和Python,但javascript对我来说总是有点松懈。这很有帮助,谢谢。好的,你要求的:选择状态名称,从密度中选择maxcolor,其中密度>=从状态属性中选择密度,其中状态名称=状态。状态名称和密度<从状态属性中选择密度,其中状态名称=状态。状态名称作为状态的颜色
color_array = []
for(var i=0; i < my_array.length; i++) {
   color_array.push([my_array[i][0] + ', ' +  getColor(my_array[i][1])]);
}
color_array = [ 
['alabama', '#FFEDA0'],
['alaska', '#FEB24C'],
etc
]