dictionary - 如何在 dc.geoChoroplethChart 中添加缩放效果?

标签 dictionary zooming dc.js

我开始使用 dc.js 库来创建各种图表,当我尝试使用 dc.js 创建 Geo Choropleth map 时遇到了一个问题,并且无法添加缩放和移动 map 的功能.
我看到的所有示例都使用 d3 和 svg.. 但是一旦我使用了这些示例,我就无法使用 dc.dimention 的数据和所有交叉过滤器计算。

例如我的代码是:

 d3.json("world-countries.json", function (statesJson) {
        geoChart.width(1000)
                .height(600)
                .dimension(countryDim)
                .projection(d3.geo.mercator()
                .scale((960 + 1) / 4 )
                .translate([960 / 4, 960 / 4])
                .precision(.1))
                .group(countryGroup)
                .colors(d3.scale.quantize().range(["#E2F2FF","#C4E4FF","#9ED2FF","#81C5FF","#6BBAFF","#51AEFF","#36A2FF","#1E96FF","#0089FF","#0061B5"]))
                .colorDomain([0, 200])
                .colorCalculator(function(d){ returnd ?geoChart.colors()(d) :'#ccc'; })
                .overlayGeoJson(statesJson.features,"state",function(d){
                    return d.properties.name;
                })
                .title(function (d) {
                    return "State: " + d.key + (d.value ? d.value : 0) + "Impressions";
                });        

效果很好,但我想添加缩放效果并能够移动 map 。我该怎么办?!?!

提前致谢!

最佳答案

所以,答案是:

var width = 960,
    height = 400;

var projection = d3.geo.mercator()
    .scale(200)
    .translate([width/2, height]);

function zoomed() {
    projection
    .translate(d3.event.translate)
    .scale(d3.event.scale);
    geoChart.render();
}

var zoom = d3.behavior.zoom()
    .translate(projection.translate())
    .scale(projection.scale())
    .scaleExtent([height/2, 8 * height])
    .on("zoom", zoomed);

var svg = d3.select("#geo-chart")
    .attr("width", width)
    .attr("height", height)
    .call(zoom);

geoChart
    .projection(projection)
    .width(1000)
    .height(400)
    .transitionDuration(1000)
    .dimension(countryDim)
    .group(ctrGroup)
    .filterHandler(function(dimension, filter){     
        dimension.filter(function(d) {return geoChart.filter() != null ? d.indexOf
        (geoChart.filter()) >= 0 : true;}); // perform filtering
        return filter; // return the actual filter value
     })
    .colors(d3.scale.quantize().range(["#E2F2FF", "#C4E4FF", "#9ED2FF", "#81C5FF",     
     "#6BBAFF", "#51AEFF", "#36A2FF", "#1E96FF", "#0089FF", "#0061B5"]))
    .colorDomain([0, 200])
    .colorCalculator(function (d) { return d ? geoChart.colors()(d) : '#ccc'; })      
    .overlayGeoJson(statesJson.features, "state", function (d) { return d.id; })    
    .title(function (d) {
        return "State: " + d.key + " " + (d.value ? d.value : 0) + " Impressions";
    });

关于dictionary - 如何在 dc.geoChoroplethChart 中添加缩放效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246125/

相关文章:

python - 如何限制字典的大小?

dictionary - 戈朗 : group and sum slice of structs

php - 用于从 GPS 数据映射路径的 JavaScript 库

search - 传单:设置搜索缩放级别

d3.js - 具有颜色范围的 dc.js 折线图

javascript - 在 Crossfilter/DC.js 中加载 CSV 并创建过滤器

C++ 模板与 STL 返回类型相结合

html - 当 HTML 和 CSS 位于同一编辑器页面时,如何在鼠标悬停时缩放图像

nvd3.js - Crossfilter 兼容图表库/DC.js 替代方案

javascript - 用 JavaScript 模仿浏览器缩放