【发布时间】:2014-05-09 16:59:03
【问题描述】:
我想知道在给定地图的宽度和高度的情况下,是否存在将 d3.geo.bounds() 数组转换为 path.bounds 像素数组的 D3-API 调用?
我在 API 文档中找不到这样的调用。我知道有一些预测应该可以解决问题,但是我未能从地理边界到达实际的像素边界。
另外,是否有计算一系列特征的经纬度质心的 API 实现?
感谢您的帮助!
示例
假设用户想要将德国和波兰缩放到全屏。我计算的经纬度边界是:
lat:47.27148371456806 long: 5.850585058505857
(1321.6041604160416,246.58117844670664)
lat:55.06843452896922 long: 24.140414041404142
(1451.6651665166517,157.87336991900156)
用谷歌地图检查,经纬度坐标是正确的。然而,计算的像素值(使用https://stackoverflow.com/a/14457180/974815 的方法)对我来说似乎很奇怪。屏幕分辨率为 2560x1258。
我想将经纬度边界转换为像素边界,以便计算墨卡托投影的偏移量:
var offset = [
this.width - (bounds[0][0] + bounds[1][0])/2,
this.height - (bounds[0][1] + bounds[1][1])/2
];
return d3.geo.path().projection(
d3.geo.mercator()
.center(this.__computeCentroid(features))
.scale(scale)
.translate(offset)
);
最好, 塞巴斯蒂安
【问题讨论】:
标签: d3.js latitude-longitude pixel geo bounds