/* Interactive India map — abstract polygonal map with pulsing project nodes. Hover a region in the side list to focus its node on the map. */ const REGIONS = [ { id: "delhi", name: "Delhi NCR", count: 18, x: 0.46, y: 0.30, kind: "HQ" }, { id: "mh", name: "Maharashtra", count: 12, x: 0.42, y: 0.55, kind: "Active" }, { id: "ka", name: "Karnataka", count: 9, x: 0.45, y: 0.72, kind: "Active" }, { id: "gj", name: "Gujarat", count: 7, x: 0.32, y: 0.48, kind: "Active" }, { id: "tg", name: "Telangana", count: 6, x: 0.50, y: 0.65, kind: "Active" }, { id: "tn", name: "Tamil Nadu", count: 8, x: 0.50, y: 0.82, kind: "Active" }, { id: "rj", name: "Rajasthan", count: 5, x: 0.34, y: 0.36, kind: "Active" }, { id: "hwy", name: "Pan-India highway corridors", count: 14, x: 0.55, y: 0.48, kind: "Corridor" }, ]; function IndiaMap() { const [active, setActive] = React.useState("delhi"); const wrapRef = React.useRef(null); const [t, setT] = React.useState(0); React.useEffect(() => { let raf, mounted = true; const start = performance.now(); const loop = () => { if (!mounted) return; setT((performance.now() - start) / 1000); raf = requestAnimationFrame(loop); }; raf = requestAnimationFrame(loop); return () => { mounted = false; cancelAnimationFrame(raf); }; }, []); // Simplified abstract polygon of India (not geographically precise — stylized). // Coordinate space 100x130. const indiaPath = "M44,8 L52,5 L60,8 L66,12 L72,16 L74,22 L70,28 L66,30 L70,36 L72,42 L70,48 L66,52 L62,56 L66,62 L68,68 L66,74 L62,80 L60,86 L58,92 L54,98 L50,108 L46,116 L42,118 L38,114 L36,108 L34,100 L30,92 L28,84 L24,76 L20,68 L18,60 L20,52 L24,46 L26,40 L24,34 L22,28 L26,22 L32,18 L38,14 Z"; return (
Coverage

Project work, by region.

We deploy on-ground survey teams and signal engineers anywhere in India. Click a region to inspect.

{REGIONS.map(r => (
setActive(r.id)} onClick={() => setActive(r.id)} >
{r.name}
{r.count} projects
))}
{/* grid */} {/* India polygon */} {/* Latitude markers */} {[20, 40, 60, 80, 100].map(y => ( {y} ))} {/* Connection lines from HQ to active regions */} {REGIONS.filter(r => r.id !== "delhi").map(r => { const x1 = 46, y1 = 39; // delhi anchor (in 100x130 space) const x2 = r.x * 100, y2 = r.y * 130; const isActive = active === r.id; return ( ); })} {/* Region nodes */} {REGIONS.map(r => { const cx = r.x * 100, cy = r.y * 130; const isActive = active === r.id; const pulse = isActive ? 1.5 + Math.sin(t * 4) * 0.3 : 0; return ( {isActive && ( )} {isActive && ( {r.name.toUpperCase()} · {r.count} )} ); })} {/* Corner HUD */}
NETWORK · LIVE
[ {REGIONS.length} states · {REGIONS.reduce((a,b)=>a+b.count,0)} projects ]
); } window.IndiaMap = IndiaMap;