我对D3的投影功能的理解是它们与比例函数做同样的事情。他们将GPS坐标映射到像素坐标。这是我目前正在使用的投影。 (我不能详细了解所有变量,但我一直摆弄它们直到地图出现)
var projection = d3.geo.albers()
.center([-122.436269,37.798107])
.rotate([0, 0, 0])
.parallels([36, 38])
.scale(300000);
这样可以很好地绘制地图:
.attr("d", d3.geo.path().projection(projection))
当我尝试绘制积分虽然数字很疯狂。
.attr("cx",function(d) {
return projection([d._lon,d._lat])[0];
})
.attr("cy",function(d) {
return projection([d._lon,d._lat])[1];
});
我该如何正确地做到这一点?
以下是我通过投影功能获得的一些示例:
[5175.3799972560955, 1808.5108650794136]
[5158.315547249338, 1823.564395627589]
[5143.958532762888, 1831.9879789081751]
在1280x800屏幕上,这些都是关闭的。即使我将它们除以100来缩放它们,它们仍然大部分只是叠加在一起。我使用twitter bootstrap定位了700 * 700 svg。不确定如何将这些考虑在内。我只是假设如果地图好的话,那么相同的投影应该适用于这些点。