2014-06-16 10 views
5

मैंने सभी प्रकार के ग्राफ बनाने के लिए dc.js लाइब्रेरी का उपयोग करना शुरू किया और जब मैं डीसीजेएस का उपयोग कर जिओ चोरोप्लेथ मानचित्र बनाने की कोशिश कर रहा था और मैप को स्थानांतरित करने और स्थानांतरित करने की क्षमता नहीं जोड़ सका तो मैंने एक समस्या में उछाल दिया।
मैंने देखा सभी उदाहरण d3 और svg का उपयोग कर रहे थे .. लेकिन एक बार जब मैंने उन उदाहरणों का उपयोग किया, तो मैं dc.dimention और सभी क्रॉसफ़िल्टर गणनाओं के डेटा का उपयोग नहीं कर सका।dc.geoChoroplethChart में ज़ूम प्रभाव कैसे जोड़ें?

उदाहरण के लिए मेरी कोड है:

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"; 
       });   

कौन सा अच्छी तरह से काम करता है, लेकिन मैं ज़ूम प्रभाव जोड़ने के लिए और नक्शे को स्थानांतरित करने में सक्षम होना चाहता हूँ। मैं उसे कैसे कर सकता हूँ?!?!

अग्रिम धन्यवाद!

उत्तर

5

तो, जवाब है:

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"; 
    }); 
+0

तो मैं कैसे ज़ूम नक्शा रीसेट कर सकते हैं? उदाहरण के लिए, सभी कार्यों को रीसेट करें वर्तमान में चयनित स्थिति को रीसेट करें, लेकिन मूल आकार पर वापस नहीं। –

+0

हम इसे ज़ूम करना शुरू करने के बाद मानचित्र के पैमाने को कैसे सेट कर सकते हैं- मेरा नक्शा बड़ा है, और मैं इसे एक "बाउंडिंग बॉक्स" में रखना चाहता हूं और इसे दिखा सकता हूं, सभी एक बार नहीं बल्कि पूर्व निर्धारित केंद्र पर आधारित और फिर उपयोगकर्ता को इसे पसंद करने के लिए नेविगेट करने की अनुमति दें। इसे कैसे प्राप्त करें? –

+0

यह मेरे लिए काम नहीं कर रहा है! 'd3.event.translate' 'अपरिभाषित' त्रुटि फेंकता है। – Ciwan

संबंधित मुद्दे