//views/paris.jade
html
head
link(rel='stylesheet', href="#{url}/stylesheets/leaflet.css")
#map(style='height: 100%;')
style.
.info {
padding: 6px 8px;
font: 14px/16px Arial, Helvetica, sans-serif;
background: white;
background: rgba(255,255,255,0.8);
box-shadow: 0 0 15px rgba(0,0,0,0.2);
border-radius: 5px;
}
.info h4 {
margin: 0 0 5px;
color: #777;
}
.legend {
text-align: left;
line-height: 18px;
color: #555;
}
.legend i {
width: 18px;
height: 18px;
float: left;
margin-right: 8px;
opacity: 0.7;
}
body
script(src="#{url}/javascripts/leaflet.js")
script.
var zones = !{JSON.stringify(zones)};
var gradient = !{JSON.stringify(gradient)};
var latlon = { lat : { max : 0, min : 90 }, lon : { max : 0, min : 90 } };
zones.features.forEach(
function(feature) {
feature.geometry.coordinates.forEach(
function(polygon) {
polygon.forEach(
function(point) {
latlon.lat.max = (latlon.lat.max > point[1]) ? latlon.lat.max : point[1];
latlon.lon.max = (latlon.lon.max > point[0]) ? latlon.lon.max : point[0];
latlon.lat.min = (latlon.lat.min < point[1]) ? latlon.lat.min : point[1];
latlon.lon.min = (latlon.lon.min < point[0]) ? latlon.lon.min : point[0];
});
});
});
var center = [latlon.lat.min + (latlon.lat.max - latlon.lat.min)/2, latlon.lon.min + (latlon.lon.max - latlon.lon.min)/2];
var zoom = 15;
var map = L.map("map").setView(center, zoom);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: 'Code source moteur (GPL) [complet]
Découpage par bureau 2017: Mairie de Paris
Données électorales: Section PCF Paris 12 (SQLite, 26Mo)
© OpenStreetMap contributors'}).addTo(map);
var info = L.control();
info.onAdd = function (map) {
this._div = L.DomUtil.create('div', 'info');
this.update();
return this._div;
};
function makePopup(f) {
var texte = "
Bureau " + f.properties.num_bv + " :";
for (var hsla in gradient) {
if (gradient[hsla].intitule) {
texte += '
' + gradient[hsla].intitule + " : ";
if (gradient[hsla].type === '%') {
texte += (gradient[hsla][f.id] * 100).toFixed(2) + '%';
}
else {
texte += (gradient[hsla][f.id]).toFixed(0);
}
}
}
return texte + "