D3.js 如何获取地图当前可见区域的坐标

D3.js 如何获取地图当前可见区域的坐标,d3.js,svg,D3.js,Svg,我想知道如何获得d3创建的地图当前可见区域的坐标(经度、纬度)。我正在寻找一种既适用于正交投影又适用于墨卡托投影的解决方案 目的是过滤要应用于地图的数据/形状 以下是我创建SVG根元素以放入地图元素的方法: var svg = d3.select(element[0]).append('svg') .attr('preserveAspectRatio', 'xMidYMid') .attr('viewBox', '0 0 ' + width + ' ' + height)

我想知道如何获得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的回答,我尝试使用项目逆方法和正交投影,如下所述:

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]

非常感谢你的帮助!
Thierry

使用投影的
.invert()
方法获取容器角落的坐标。非常感谢您的回答,Lars!你能给一个链接到这个函数的文档或者一个使用示例吗?它只是
projection1.invert([x,y])
或者
projection2.invert([x,y])
。谢谢!对我来说还不太明显的是:如何获得显示区域的坐标?i、 e.如何获得x和y参数以传递给反转方法?我用最新的测试更新了我的问题。使用投影的
.invert()
方法获得容器角的坐标。非常感谢您的回答,Lars!你能给一个链接到这个函数的文档或者一个使用示例吗?它只是
projection1.invert([x,y])
或者
projection2.invert([x,y])
。谢谢!对我来说还不太明显的是:如何获得显示区域的坐标?i、 e.如何将x和y参数传递到反转方法?我用最新的测试更新了我的问题。