Basic mouse interactivity with Leaflet
Built with blockbuilder.org
forked from enjalot's block: WWSD #1: Leaflet starter
forked from enjalot's block: WWSD #1-a: Leaflet Rivers
forked from enjalot's block: WWSD #2-a: Leaflet Choropleth
Basic mouse interactivity with Leaflet
Built with blockbuilder.org
forked from enjalot's block: WWSD #1: Leaflet starter
forked from enjalot's block: WWSD #1-a: Leaflet Rivers
forked from enjalot's block: WWSD #2-a: Leaflet Choropleth
<!DOCTYPE html> | |
<head> | |
<meta charset="utf-8"> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script> | |
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" /> | |
<script src="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js"></script> | |
<style> | |
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; } | |
#map { | |
height: 100%; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="map"></div> | |
<script> | |
var map = L.map('map').setView([30, 0], 2); | |
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { | |
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' | |
}).addTo(map); | |
var url = "http://enjalot.github.io/wwsd/data/world/ne_50m_admin_0_countries.geojson" | |
d3.json(url, function(err, data) { | |
var maxPop = d3.max(data.features, function(d) { return d.properties.pop_est }) | |
var color = d3.scale.threshold() | |
.domain([0, 1000000, 100000000, 1000000000]) | |
.range(["#ffffcc","#c2e699","#78c679","#31a354","#006837"]) | |
function highlightFeature(e) { | |
var layer = e.target; | |
layer.setStyle({ | |
weight: 5, | |
color: '#666', | |
dashArray: '', | |
fillOpacity: 0.7 | |
}); | |
} | |
function resetHighlight(e) { | |
geojsonLayer.resetStyle(e.target); | |
} | |
function zoomToFeature(e) { | |
map.fitBounds(e.target.getBounds()); | |
} | |
function onEachFeature(feature, layer) { | |
layer.on({ | |
mouseover: highlightFeature, | |
mouseout: resetHighlight, | |
click: zoomToFeature | |
}); | |
} | |
var geojsonLayer = L.geoJson(data, { | |
style: function(feature) { | |
return { | |
fillColor: color(feature.properties.pop_est), | |
fillOpacity:0.4, | |
weight: 1, | |
} | |
}, | |
onEachFeature: onEachFeature | |
}).addTo(map) | |
}) | |
</script> | |
</body> |