map = {
const context = DOM.context2d(width, height);
const path = d3.geoPath(projection, context);
const airQualityData = await fetchAirQualityData(fixedDate);
const minPM25 = d3.min(airQualityData, d => d.value);
const maxPM25 = d3.max(airQualityData, d => d.value);
const colorScale = d3_scale.scaleSequential()
.domain([minPM25, maxPM25])
.interpolator(d3_scale.interpolateRainbow);
context.save();
context.beginPath(), path(outline), context.clip(), context.fillStyle = "#fff", context.fillRect(0, 0, width, height);
context.beginPath(), path(graticule), context.strokeStyle = "#ccc", context.stroke();
context.beginPath(), path(land), context.fillStyle = "#000", context.fill();
drawAirQualityData(context, path, airQualityData, projection, colorScale);
context.restore();
context.beginPath(), path(outline), context.strokeStyle = "#000", context.stroke();
return context.canvas;
}