अपडेट करें: मैंने उत्तर अनुभाग में एक पूरी तरह से काम कर रहे समाधान को पोस्ट और स्वीकार कर लिया है। इस खंड में किसी भी कोड को अपने स्वयं के गैर-कार्य कोड की तुलना के संदर्भ के रूप में उपयोग किया जाना है, लेकिन समाधान के रूप में उपयोग नहीं किया जाना है।d3.js मानचित्र (<svg>) माता-पिता कंटेनर में ऑटो फ़िट करें और विंडो
मैं एक डैशबोर्ड का निर्माण कर रहा हूँ और दुनिया के नक्शे कि भू स्थान के आधार पर वास्तविक समय में ट्वीट्स साजिश जाएगा जोड़ने के लिए d3.js का उपयोग कर।
world.json फ़ाइल d3.json() लाइन में संदर्भित डाउनलोड करने योग्य है HERE (यह विश्व countries.json कहा जाता है)।
नक्शा एक एसवीजी कंटेनर के रूप में पृष्ठ पर है और डी 3 का उपयोग कर गाया है।
नीचे प्रासंगिक कोड स्लाइस हैं।
<div id="mapContainer">
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="500"></svg>
</div>
#mapContainer svg {
display:block;
margin:0 auto;
}
#mapContainer path {
fill:#DDD;
stroke:#FFF;
}
// generate US plot
function draw() {
var map = d3.select("svg");
var width = $("svg").parent().width();
var height = $("svg").parent().height();
var projection = d3.geo.equirectangular().scale(185).translate([width/2, height/2]);
var path = d3.geo.path().projection(projection);
d3.json('plugins/maps/world.json', function(collection) {
map.selectAll('path').data(collection.features).enter()
.append('path')
.attr('d', path)
.attr("width", width)
.attr("height", height);
});
}
draw();
latestLoop();
$(window).resize(function() {
draw();
});
अद्यतन: मैं एक स्वीकार्य आकार (मेरी विशेष ब्राउज़र आकार के लिए) के लिए नक्शे बढ़ाया है, लेकिन यह अभी भी स्केल नहीं करेगा और जब मैं खिड़की के आकार को बदलता हूं तो केंद्र। यदि, हालांकि, मैं खिड़की का आकार बदलता हूं, फिर रीफ्रेश दबाता हूं, फिर पृष्ठ को फिर से लोड होने के बाद मानचित्र केंद्रित किया जाएगा। हालांकि, चूंकि पैमाने स्थिर है, यह ठीक से स्केल नहीं किया गया है।
क्या यह सब कुछ लिखना नहीं है? इससे कैसे बचा जा सकता है? – Arkanoid
@arkanoid शायद ... यह समाधान मेरे लिए काम करता है, तो अगर अंत में यह क्या कर रहा है, तो * shrug *। मैंने यह नहीं खोला कि डी 3 चीजें कैसे प्रस्तुत कर रहा है, इसलिए यदि मेरा समाधान वास्तव में सिर्फ एक पुनर्लेखन है, तो मुझे लगता है कि आप इसे कैसे करते हैं। – Jon