|
|
|
@ -1,13 +1,3 @@
|
|
|
|
|
// const mapWidth = document.getElementById("indiaMap").getAttribute("width")
|
|
|
|
|
// const mapHeight = document.getElementById("indiaMap").getAttribute("height")
|
|
|
|
|
const mapWidth = window.innerWidth - document.querySelector(".svgContainer").offsetWidth;
|
|
|
|
|
|
|
|
|
|
const svg = d3.select(".svgContainer")
|
|
|
|
|
.append('svg')
|
|
|
|
|
.attr('width', '100%')
|
|
|
|
|
.attr('preserveAspectRatio', "xMinYMin meet")
|
|
|
|
|
.attr('id', 'indiaMap');
|
|
|
|
|
|
|
|
|
|
const defaultColor = "#555555"
|
|
|
|
|
|
|
|
|
|
const languages = {
|
|
|
|
@ -137,6 +127,33 @@ const district2lang = { // Should override state colors
|
|
|
|
|
"Bahraich": languages["awadhi"],
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function responsivefy(svg) {
|
|
|
|
|
// get container + svg aspect ratio
|
|
|
|
|
var container = d3.select(svg.node().parentNode),
|
|
|
|
|
width = parseInt(svg.style("width")),
|
|
|
|
|
height = parseInt(svg.style("height")),
|
|
|
|
|
aspect = width / height;
|
|
|
|
|
|
|
|
|
|
// add viewBox and preserveAspectRatio properties,
|
|
|
|
|
// and call resize so that svg resizes on inital page load
|
|
|
|
|
svg.attr("viewBox", "0 0 " + width + " " + height)
|
|
|
|
|
.attr("perserveAspectRatio", "xMinYMid")
|
|
|
|
|
.call(resize);
|
|
|
|
|
|
|
|
|
|
// to register multiple listeners for same event type,
|
|
|
|
|
// you need to add namespace, i.e., 'click.foo'
|
|
|
|
|
// necessary if you call invoke this function for multiple svgs
|
|
|
|
|
// api docs: https://github.com/mbostock/d3/wiki/Selections#on
|
|
|
|
|
d3.select(window).on("resize." + container.attr("id"), resize);
|
|
|
|
|
|
|
|
|
|
// get width of container and resize svg to fit it
|
|
|
|
|
function resize() {
|
|
|
|
|
var targetWidth = Math.floor(container.node().getBoundingClientRect().width);
|
|
|
|
|
svg.attr("width", targetWidth);
|
|
|
|
|
svg.attr("height", Math.round(targetWidth / aspect));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Functions for calculating and dealing with language boundaries
|
|
|
|
|
function reverseCoordArrays(coords) {
|
|
|
|
|
if (!Array.isArray(coords)) {
|
|
|
|
@ -193,6 +210,20 @@ function stateOrDistrictOrLanguage(d) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// const mapWidth = document.getElementById("indiaMap").getAttribute("width")
|
|
|
|
|
// const mapHeight = document.getElementById("indiaMap").getAttribute("height")
|
|
|
|
|
const mapWidth = window.innerWidth - document.querySelector("#svgContainer").offsetWidth;
|
|
|
|
|
|
|
|
|
|
const svg = d3.select("#svgContainer")
|
|
|
|
|
.append('svg')
|
|
|
|
|
.attr('width', '1300')
|
|
|
|
|
.attr('height', '1300')
|
|
|
|
|
// .attr('viewbox', '0 0 860 500')
|
|
|
|
|
// .attr('preserveAspectRatio', "xMidYMid meet")
|
|
|
|
|
.attr('id', 'indiaMap')
|
|
|
|
|
.call(responsivefy);
|
|
|
|
|
|
|
|
|
|
function drawMap(world) {
|
|
|
|
|
const projection = d3.geoMercator().fitWidth(mapWidth,world)
|
|
|
|
|
const path = d3.geoPath().projection(projection);
|
|
|
|
|