AGGIORNAMENTO: Ho inserito e accettato una soluzione pienamente funzionante nella sezione delle risposte. Qualsiasi codice in questa sezione deve essere utilizzato come riferimento per il confronto con il proprio codice NON FUNZIONANTE, ma non deve essere utilizzato come soluzione.Mappa d3.js (<svg>) Adatta automaticamente nel contenitore principale e ridimensiona con finestra
Sto costruendo una cruscotto e utilizzando d3.js per aggiungere una mappa del mondo che tracciare i tweet in tempo reale in base alla posizione geografica.
Il world.json file di riferimento nella linea d3.json() è scaricabile HERE (si chiama mondo-countries.json).
La mappa è sulla pagina come un contenitore SVG e viene reso utilizzando d3.
Di seguito sono riportate le sezioni di codice rilevanti.
<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();
});
UPDATE: ho scalato la mappa per una dimensione accettabile (per il mio particolare dimensione del browser), ma ancora non si scala e centro quando cambio la dimensione della finestra. SE, tuttavia, ridimensiono la finestra, quindi clicco su Aggiorna, quindi la mappa sarà centrata quando la pagina verrà ricaricata. Tuttavia, poiché la scala è statica, non viene ridimensionata correttamente.
Non sta riscrivendo tutto? Come posso evitare questo? – Arkanoid
@arkanoid Forse ... questa soluzione ha funzionato per me, quindi se questo è in definitiva ciò che sta facendo, allora * scrollate le spalle *. Non ho indagato su come d3 sta rendendo le cose, quindi se la mia soluzione è in realtà solo una riscrittura, allora suppongo che sia così che si fa. – Jon