<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GeoJSON Map with D3.js</title> <script src="https://d3js.org/d3.v7.min.js"></script> <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f4f4f4; } svg { border: 1px solid #ccc; } .state { fill: lightblue; stroke: black; stroke-width: 0.5; transition: fill 0.3s; } .state:hover { fill: orange; } </style> </head> <body> <svg width="1000" height="600"></svg> <script> const svg = d3.select("svg") const map1 = new Map(); function drawMap(world) { const projection = d3.geoMercator().fitSize([1000,600], world) const path = d3.geoPath().projection(projection); // Draw the map svg.selectAll("path") .data(world.features) .enter() .append("path") .attr("d", path) .attr("class", "state") .append("title") // Tooltip .text(d => d.properties.name) .each(function(d) { map1.set(d.properties.name, d3.geoCentroid(d)); }); } // Load GeoJSON file d3.json("india.json").then(drawMap) console.log(map1) </script> </body> </html>