D3.js d3仅显示地图边界内的线字符串

D3.js d3仅显示地图边界内的线字符串,d3.js,D3.js,我试图在d3.js中的OpenStreetMap分幅上绘制运行路线,当我一次显示

我试图在d3.js中的OpenStreetMap分幅上绘制运行路线,当我一次显示<1000条路线时,这不是问题,但我有超过100000条路线。因为不是所有的路线都在同一个地理位置,我只想一次展示一下伦敦大都会区的路线

我遇到的问题是在显示在地图上之前进行过滤,即根据定义的投影和路径查找路线的边界框;寻找路线质心;然后查看投影是否包含路线质心。我一直在搜索d3.js文档,但没能让它正常工作;有人对如何最好地解决这个问题有什么建议吗

// Sample projection and tile code for London
var projection = d3.geo.mercator()
    .center([0.1275, 51.5072])
    .scale((1 << 20) / 2 / Math.PI)
    .translate([960 / 2, 500 / 2]);
var tiler = d3.geo.tile()
    .size([960, 500]);
var tilerData = tiler
    .scale(projection.scale() * 2 * Math.PI)
    .translate(projection([0, 0]));
var path = d3.geo.path()
    .projection(projection);

// Data read in from CSV file - [id, date, encoded_poly]
d3.csv('data/gpsdata.csv', function (d) {

    // Is there a way to filter out the routes that are displayed on the visible map?

    var mapBounds = tilerData.getBounds();
    var filteredData = d.filter(function(e){
        var x = {type: "LineString", coordinates: decode(e.encPoly)};
        return mapBounds.contains(path(x).getBounds().getCenter());
});
//伦敦的投影和瓷砖代码示例
var projection=d3.geo.mercator()
.中间([0.127515072])

.scale((1)您在寻找吗?@LarsKotthoff对路线质心非常有效……您是否建议使用类似svg.getBBox()的东西其中svg是地图或其他与路径元素相关的内容的容器,用于检查地图是否包含路线质心?如果您自己设置svg的宽度和高度,您甚至不需要这样做。只需将质心坐标与该大小进行比较(对所做的任何平移进行模化)。