map = () => {
const svg = d3
.create("svg")
.attr("width", w)
.attr("height", h)
.attr("viewBox", [0, 0, w, h])
svg.append('defs').append('filter')
.attr('id', "blur")
.attr('x', "-50%")
.attr('y', "-50%")
.attr('width', "200%")
.attr('height', "200%")
.append('feGaussianBlur')
.attr('in', "SourceGraphic")
.attr('stdDeviation', "10")
let map = svg
.append('g')
.attr('class', 'map')
map
.selectAll(".provincia")
.data(province.features)
.enter()
.append("path")
.attr("class", "provincia")
.attr("d", path)
const merge = topojson.merge(italy, italy.objects.province.geometries)
map
.append('path')
.datum(merge)
.attr("d", path)
.attr("class", "shadow")
.style('filter', 'url(#blur)')
map
.append('path')
.datum(merge)
.attr("d", path)
.attr("class", "italy")
.attr("id", "land")
map
.append('path')
.datum(topojson.mesh(italy, italy.objects.province, (a,b) => a !== b && a.properties.COD_REG == b.properties.COD_REG))
.attr("d", path)
.attr("class", "province_borders")
map
.append('path')
.datum(topojson.mesh(italy, italy.objects.province, (a,b) => a !== b && a.properties.COD_REG != b.properties.COD_REG))
.attr("d", path)
.attr("class", "regioni_borders")
function zoomed(event) {
map.attr('transform', event.transform)
}
svg.call(zoom.on('zoom.default', zoomed))
return svg.node()
}