如何从d3中的一组点计算传单的边界框

时间:2014-12-13 03:36:18

标签: d3.js leaflet

我从d3 / crossfilter数据集(从CSV加载)向传单映射添加点。添加点后,我想缩放/平移以使该点在视图中。最简单的方法是什么...我想我可以编写一些最小/最大经度/纬度函数,然后遍历数据集来创建一个与map.fitBound一起使用的边界框,但想知道是否有更简单的方法...

代码段: -

function updateMapData() {
    g.selectAll("*").remove();
    var feature = g.selectAll("circle")
        .data(byID.top(Infinity))
        .enter()
        .append("circle")
            .style("stroke", "black")  
            .style("opacity", .95) 
            .style("fill", "black")
            .attr("r", 4);

    map.on("viewreset", updateMap);
    updateMap(); 

    function updateMap() {
        feature.attr("transform", 
        function(d) { 
            return "translate("+ 
                map.latLngToLayerPoint(d.LatLng).x +","+ 
                map.latLngToLayerPoint(d.LatLng).y +")";
            }
        )
    };
};

1 个答案:

答案 0 :(得分:0)

最后,我只是运行了以下内容(但我仍然想知道是否有更简单的方法,或者我是否应该使用geoJSON或d3.geo代替......)

bounds = [];
byID.top(Infinity).forEach(function (d) {
    bounds.push(d.LatLng);
});  
map.fitBounds(bounds, {pan: {animate: true, duration: 1.5, easeLinearity: 0.25}});