我想知道如何获得用d3创建的地图当前可见区域的坐标(经度,纬度)。我正在寻找适用于正交投影和墨卡托投影的解决方案。
目的是过滤要应用于地图的数据/形状。
这是我创建SVG根元素以将地图元素放入:
的方式var svg = d3.select(element[0]).append('svg')
.attr('preserveAspectRatio', 'xMidYMid')
.attr('viewBox', '0 0 ' + width + ' ' + height)
.attr('width', mWidth)
.attr('height', mWidth * height / width);
svg.append('rect')
.attr('class', 'background')
.attr('width', width)
.attr('height', height);
以下是我创建投影的方法:
var projection1 = d3.geo.orthographic()
.scale(248)
.clipAngle(90);
var projection2 = d3.geo.mercator()
.translate([configuration.width / 2, configuration.height / 1.5]);
修改
根据Lars的回答,我尝试使用项目#inverse method with orthographic projection,如下所述:
var bbox = svg.node().getBBox();
var x1 = bbox.x;
var y1 = bbox.y;
var x2 = bbox.x+bbox.width;
var y2 = bbox.y+bbox.height;
var lonLat1 = projection.invert([x1, y1]);
var lonLat2 = projection.invert([x2, y2]);
无论缩放级别如何,变量lonLat1
和lonLat2
都是[NaN,NaN]
。
非常感谢你的帮助! 亨利