更新:回答セクションに完全に機能するソリューションを投稿して受け入れました。このセクションのコードは、独自の非動作コードと比較するための参照として使用されますが、解決策としては使用されません。
ダッシュボードを作成し、d3.jsを使用して、地理的位置に基づいてリアルタイムでツイートをプロットする世界地図を追加しています。
d3.json ()行で参照されているworld.jsonファイルは、ここからダウンロードできます(world-countries.jsonと呼ばれます)。
マップはSVGコンテナーとしてページ上にあり、d3を使用してレンダリングされます。
以下は、関連するコードスライスです。
<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();
});
更新:マップを(特定のブラウザーサイズに対して)許容可能なサイズに拡大縮小しましたが、ウィンドウのサイズを変更しても拡大縮小および中央揃えされません。ただし、ウィンドウのサイズを変更してから[更新]をクリックすると、ページが再読み込みされるとマップが中央に配置されます。ただし、スケールは静的であるため、適切にスケーリングされません。