所选项目具有不同填充不透明度的 geoChoroplethChart 地图

geoChoroplethChart map with different fill opacity for the selected item

我已经实现了 infographic / map using crossfilter and d3.js

我想添加的功能是...

当用户点击一个特定实体时,在我的例子中是欧盟成员国,所选状态的填充不透明度与其他状态区分开来,即变得更暗。

我找到了一个很好的例子 here,但是那里的代码没有准确指定处理状态选择的部分在哪里。

正如您在my map上看到的那样,在地图上没有任何东西可以区分选定的状态,我觉得这让用户感到非常不安。

我所有的代码都可以找到here

这是与地图本身关系最密切的部分:

        //This is the data for the Map
    d3.json("data/europe.json", function (error, eu) { 

        console.log('map', eu)
        usChart
        .width(590)
        .height(500)
        .projection(projection
                    .scale((1200 + 1) / 2 )
                    .translate([660 / 4, 3360 / 4])
                    .precision(.1)
                    )
                .dimension(countries)
                .group(countriesJobsdSum)

                    .filterHandler(function(dimension, filter){     
    dimension.filter(function(d) {return usChart.filter() != null ? d.indexOf
    (usChart.filter()) >= 0 : true;}); // perform filtering
    return filter; // return the actual filter value
 })

                .colors(d3.scale.quantize().range(
                    ["#8c857d", "#d982ab", "#d9525e", "#a63f52", "#8c6976", "#55b1b1", "#637e9e"])
                )
                .colorDomain([0, 200])
                .colorCalculator(function (d) { return d ? usChart.colors()(d) : '#ccc'; })
                .overlayGeoJson(eu.features, "countries", function (d) {
                    return d.properties.name;
                    //return d.properties.Country;
                })
                .transitionDuration(0)
                .title(function (d) {
                    return "Country: " + d.key + "\nNumber of Jobs: " + numberFormat(d.value ? d.value : 0) ;
                }); 

好消息是 dc.js 已经添加了 类 来定位选定和取消选定的元素。您只需添加 css 即可根据需要设置这些元素的样式。

你可以这样做

g.deselected path {
    fill: gray;
}

从取消选择的区域中删除颜色。

或者你可以

g.selected path {
    stroke: yellow;
    stroke-width: 2px;
}

突出显示 is/are 选择的区域。