Mexico states
d3 map visualization exampple
license: mit |
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>Mexico</title> | |
<style> | |
.boundary { | |
fill: none; | |
stroke: #888; | |
stroke-linejoin: round; | |
} | |
svg { | |
border-style: solid; | |
border-width: 1px; | |
border-color: #ccc; | |
} | |
#tooltip{ | |
position: absolute; | |
z-index: 2; | |
background: rgba(0,70,30,1.0); | |
width:130px; | |
height:20px; | |
color:white; | |
font-size: 14px; | |
padding:5px; | |
top:-150px; | |
left:-150px; | |
font-family: Lucida Grande", sans-serif; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="map"></div> | |
<div id="tooltip"></div> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="http://d3js.org/topojson.v1.min.js"></script> | |
<script> | |
(function() { | |
var height = 600; | |
var width = 900; | |
var projection = d3.geo.mercator(); | |
var map = void 0; | |
var mexico = void 0; | |
var hover = function(d) { | |
console.log('d', d, 'event', event); | |
var div = document.getElementById('tooltip'); | |
div.style.left = event.pageX +'px'; | |
div.style.top = event.pageY + 'px'; | |
div.innerHTML = d.properties.NAME_1; | |
}; | |
var path = d3.geo.path().projection(projection); | |
var svg = d3.select("#map") | |
.append("svg") | |
.attr("width", width) | |
.attr("height", height); | |
d3.json('geo-data.json', function(data) { | |
var states = topojson.feature(data, data.objects.MEX_adm1); | |
var b, s, t; | |
projection.scale(1).translate([0, 0]); | |
var b = path.bounds(states); | |
var s = .9 / Math.max((b[1][0] - b[0][0]) / width, (b[1][1] - b[0][1]) / height); | |
var t = [(width - s * (b[1][0] + b[0][0])) / 2, (height - s * (b[1][1] + b[0][1])) / 2]; | |
projection.scale(s).translate(t); | |
map = svg.append('g').attr('class', 'boundary'); | |
mexico = map.selectAll('path').data(states.features); | |
mexico.enter() | |
.append('path') | |
.attr('d', path) | |
.on("mouseover", hover); | |
mexico.attr('fill', '#eee'); | |
mexico.exit().remove(); | |
}); | |
})(); | |
</script> | |
</body> |
Hi. I use your repo for a example in Observable in https://observablehq.com/d/42f1bf198afa4afa
Thanks for the help!!