projectedBounds = function(features, proj, padding=10) {
let boundsArray = features
.map(d => d3.geoPath().projection(projection).bounds(d))
let x = d3.min(boundsArray.map(d => d3.min(d.map(d1 => d1[0])))) - padding
let y = d3.min(boundsArray.map(d => d3.min(d.map(d1 => d1[1])))) - padding
let width = (padding * 2) + d3.max(boundsArray.map(d => d3.max(d.map(d1 => d1[0])))) - x
let height = (padding * 2) + d3.max(boundsArray.map(d => d3.max(d.map(d1 => d1[1])))) - y
return ({x: x, y:y, width:width, height:height })
}