forked from vrs/blinkenworld
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmain.js
101 lines (90 loc) · 3.21 KB
/
main.js
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
98
99
100
101
function key(canvas) {
var context = canvas.getContext('2d');
var pixels = context.getImageData(0, 0, canvas.width, canvas.height);
var l = pixels.data.length / 4;
for (var i = 0; i < l; i++) {
var r = pixels.data[i * 4 + 0];
var g = pixels.data[i * 4 + 1];
var b = pixels.data[i * 4 + 2];
if (r == '254' && g == '254' && b == '254') {
pixels.data[i * 4 + 3] = 0;
};
};
context.putImageData(pixels, 0, 0);
};
var map = new OpenLayers.Map(
'map',
{maxResolution: 0.703125}
);
var wmscURL = [
"http://wmsc1.terrapages.net/getmap?",
"http://wmsc2.terrapages.net/getmap?",
"http://wmsc3.terrapages.net/getmap?",
"http://wmsc4.terrapages.net/getmap?"
];
var terrapagesStreetLayer = new OpenLayers.Layer.WMS(
'TerraPages Street',
wmscURL,
{
layers: 'UnprojectedStreet',
format: 'image/jpeg'
},
{
buffer: 1,
isBaseLayer: true
}
);
map.addLayer(terrapagesStreetLayer);
map.zoomToMaxExtent();
document.addEventListener('DOMContentLoaded', function (){
var markersLayer = new OpenLayers.Layer.Markers('Countryballs');
var req = new XMLHttpRequest();
req.open('GET', 'http://krautchan.net/ajax/geoip/lasthour', true);
req.onreadystatechange = function(e) {
if (req.readyState == 4) {
if(req.status == 200) {
intData = JSON.parse(req.responseText)["data"];
for (i in intData) {
var iconImage = new Image();
iconImage.crossOrigin = 'Benis';
iconImage.lon = intData[i][1];
iconImage.lat = intData[i][2];
iconImage.src = 'http://krautchan.net' + intData[i][3];
iconImage.count = intData[i][4];
iconImage.onload = function(e) {
var iconSize = new OpenLayers.Size(this.naturalWidth, this.naturalHeight);
var factor = Math.ceil(Math.sqrt(this.count));
if (factor > 4) {
factor = 4;
};
if (factor > 1) {
var canvas = document.createElement('canvas');
canvas.setAttribute('width', this.naturalWidth + 4);
canvas.setAttribute('height',this.naturalHeight + 4);
var context = canvas.getContext('2d');
context.fillStyle = '#fefefe';
context.fillRect(0, 0, canvas.width, canvas.height);
context.drawImage(this, 2, 2);
var scaledImage = hqx(canvas, factor);
key(scaledImage);
this.src = scaledImage.toDataURL('image/png');
iconSize.w = scaledImage.width;
iconSize.h = scaledImage.height;
};
var iconOffset = new OpenLayers.Pixel(-(iconSize.w/2), -iconSize.h);
var marker = new OpenLayers.Marker(
new OpenLayers.LonLat(this.lon, this.lat),
new OpenLayers.Icon(this.src, iconSize, iconOffset)
);
markersLayer.addMarker(marker);
}
}
map.addLayer(markersLayer);
markersLayer.setVisibility(true);
} else {
alert('Could not reach Krautchan /int/ API.');
}
}
};
req.send(null);
}, false);