UNPKG

mapbox-gl

Version:
86 lines (80 loc) 2.32 kB
'use strict'; 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; };