-
Notifications
You must be signed in to change notification settings - Fork 1k
/
highmaps_world.html
97 lines (87 loc) · 3.96 KB
/
highmaps_world.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html>
<html>
<head>
<style>
.active { fill: blue !important;}
/*.datamaps-key dt, .datamaps-key dd {float: none !important;}
.datamaps-key {right: -50px; top: 0;}*/
</style>
</head>
<body>
<div id="container1" style="border:1px dotted blue; width: 700px; height: 475px; position: relative;"></div>
<script src="../js/components/d3/d3.min.js"></script>
<script src="../js/components/topojson/topojson.js"></script>
<script src="../../dist/datamaps.world.js"></script>
<script>
// example data from server
var series = [
["BLR",75],["BLZ",43],["RUS",50],["RWA",88],["SRB",21],["TLS",43],
["REU",21],["TKM",19],["TJK",60],["ROU",4],["TKL",44],["GNB",38],
["GUM",67],["GTM",2],["SGS",95],["GRC",60],["GNQ",57],["GLP",53],
["JPN",59],["GUY",24],["GGY",4],["GUF",21],["GEO",42],["GRD",65],
["GBR",14],["GAB",47],["SLV",15],["GIN",19],["GMB",63],["GRL",56],
["ERI",57],["MNE",93],["MDA",39],["MDG",71],["MAF",16],["MAR",8],
["MCO",25],["UZB",81],["MMR",21],["MLI",95],["MAC",33],["MNG",93],
["MHL",15],["MKD",52],["MUS",19],["MLT",69],["MWI",37],["MDV",44],
["MTQ",13],["MNP",21],["MSR",89],["MRT",20],["IMN",72],["UGA",59],
["TZA",62],["MYS",75],["MEX",80],["ISR",77],["FRA",54],["IOT",56],
["SHN",91],["FIN",51],["FJI",22],["FLK",4],["FSM",69],["FRO",70],
["NIC",66],["NLD",53],["NOR",7],["NAM",63],["VUT",15],["NCL",66],
["NER",34],["NFK",33],["NGA",45],["NZL",96],["NPL",21],["NRU",13],
["NIU",6],["COK",19],["XKX",32],["CIV",27],["CHE",65],["COL",64],
["CHN",16],["CMR",70],["CHL",15],["CCK",85],["CAN",76],["COG",20],
["CAF",93],["COD",36],["CZE",77],["CYP",65],["CXR",14],["CRI",31],
["CUW",67],["CPV",63],["CUB",40],["SWZ",58],["SYR",96],["SXM",31]];
// Datamaps expect data in format:
// { "USA": { "fillColor": "#42a844", numberOfWhatever: 75},
// "FRA": { "fillColor": "#8dc386", numberOfWhatever: 43 } }
var dataset = {};
// We need to colorize every country based on "numberOfWhatever"
// colors should be uniq for every value.
// For this purpose we create palette(using min/max series-value)
var onlyValues = series.map(function(obj){ return obj[1]; });
var minValue = Math.min.apply(null, onlyValues),
maxValue = Math.max.apply(null, onlyValues);
// create color palette function
// color can be whatever you wish
var paletteScale = d3.scale.linear()
.domain([minValue,maxValue])
.range(["#EFEFFF","#02386F"]); // blue color
// fill dataset in appropriate format
series.forEach(function(item){ //
// item example value ["USA", 70]
var iso = item[0],
value = item[1];
dataset[iso] = { numberOfThings: value, fillColor: paletteScale(value) };
});
// render map
new Datamap({
element: document.getElementById('container1'),
projection: 'mercator', // big world map
// countries don't listed in dataset will be painted with this color
fills: { defaultFill: '#F5F5F5' },
data: dataset,
geographyConfig: {
borderColor: '#DEDEDE',
highlightBorderWidth: 2,
// don't change color on mouse hover
highlightFillColor: function(geo) {
return geo['fillColor'] || '#F5F5F5';
},
// only change border
highlightBorderColor: '#B7B7B7',
// show desired information in tooltip
popupTemplate: function(geo, data) {
// don't show tooltip if country don't present in dataset
if (!data) { return ; }
// tooltip content
return ['<div class="hoverinfo">',
'<strong>', geo.properties.name, '</strong>',
'<br>Count: <strong>', data.numberOfThings, '</strong>',
'</div>'].join('');
}
}
});
</script>
</body>
</html>