mapbox-gl
Version:
A WebGL interactive maps library
86 lines (80 loc) • 2.32 kB
JavaScript
;
exports.getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onerror = function(e) {
callback(e);
};
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300 && xhr.response) {
var data;
try {
data = JSON.parse(xhr.response);
} catch (err) {
return callback(err);
}
callback(null, data);
} else {
callback(new Error(xhr.statusText));
}
};
xhr.send();
return xhr;
};
exports.getArrayBuffer = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onerror = function(e) {
callback(e);
};
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300 && xhr.response) {
callback(null, xhr.response);
} else {
callback(new Error(xhr.statusText));
}
};
xhr.send();
return xhr;
};
function sameOrigin(url) {
var a = document.createElement('a');
a.href = url;
return a.protocol === document.location.protocol && a.host === document.location.host;
}
exports.getImage = function(url, callback) {
var img = new Image();
if (!sameOrigin(url)) {
img.crossOrigin = 'Anonymous';
}
img.onload = function() {
callback(null, img);
};
img.src = url;
img.getData = function() {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = img.width;
canvas.height = img.height;
context.drawImage(img, 0, 0);
return context.getImageData(0, 0, img.width, img.height).data;
};
return img;
};
exports.getVideo = function(urls, callback) {
var video = document.createElement('video');
video.onloadstart = function() {
callback(null, video);
};
for (var i = 0; i < urls.length; i++) {
var s = document.createElement('source');
if (!sameOrigin(urls[i])) {
video.crossOrigin = 'Anonymous';
}
s.src = urls[i];
video.appendChild(s);
}
video.getData = function() { return video; };
return video;
};