tileData = {
var height = 520;
var projection = d3
.geoAzimuthalEqualArea()
.center([0, 0])
.rotate([96, -40, 6])
.scale(1700)
.translate([width / 2, height / 2]);
var tile = d3
.tile()
.size([width, height])
.scale(projection.scale() * 2 * Math.PI)
.translate(projection([0, 0]));
var tiles = Promise.all(
tile().map(async t => {
let data = new vt.VectorTile(
new protobuf(
await d3.buffer(
`https://api.mapbox.com/v4/mapbox.mapbox-streets-v8,mapbox.hist-pres-election-county/${t.z}/${t.x}/${t.y}.mvt?sku=101esRrPXF7pO&access_token=pk.eyJ1IjoicGxhbmVtYWQiLCJhIjoiemdYSVVLRSJ9.g3lbg_eN0kztmsfIPxa9MQ`
)
)
).layers;
t.data = Object.keys(data).reduce((initialData, key) => {
initialData[key] = {
type: "FeatureCollection",
features: [...Array(data[key].length).keys()].map((item, i) => {
let feature = data[key].feature(i).toGeoJSON(t.x, t.y, t.z);
if (key === 'water') {
feature.properties['class'] = 'water';
}
return feature;
})
};
return initialData;
}, {});
return t;
})
);
return tiles;
}