/** * This library contains common core code between offlineTilesEnabler.js * and OfflineTilesEnablerLayer.js */ define([ "dojo/query", "esri/geometry/Point", "esri/geometry/Extent", "esri/SpatialReference", "esri/layers/TileInfo", "esri/layers/LOD", "tiles/base64utils", "tiles/tilingScheme" ], function(query,Point,Extent,SpatialReference,TileInfo,LOD,Base64Utils,TilingScheme){ "use strict"; var TilesCore = function(){ this._storeTile= function(url,proxyPath,store,callback) // callback(success, msg) { url = url.split("?")[0]; /* download the tile */ var imgurl = proxyPath ? proxyPath + "?" + url : url; var req = new XMLHttpRequest(); req.open("GET", imgurl, true); req.overrideMimeType("text/plain; charset=x-user-defined"); // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest#Handling_binary_data req.onload = function () { if (req.status === 200 && req.responseText !== "") { var img = Base64Utils.wordToBase64(Base64Utils.stringToWord(this.responseText)); var tile = { url: url, img: img }; store.store(tile, callback); } else { console.log("xhr failed for", imgurl); callback(false, req.status + " " + req.statusText + ": " + req.response + " when downloading " + imgurl); } }; req.onerror = function (e) { console.log("xhr failed for", imgurl); callback(false, e); }; req.send(null); }; /** * Loads a csv file into storage. * Format is "url,img\r\n somebase64image,http://esri.com" * @param file * @param store * @param callback * @private */ this._loadFromFile = function(file,store,callback){ if (window.File && window.FileReader && window.FileList && window.Blob) { // Great success! All the File APIs are supported. var reader = new FileReader(); reader.onload = function(evt) { var csvContent = evt.target.result; var tiles = csvContent.split("\r\n"); var tileCount = 0; var pair, tile; if(tiles[0] !== "url,img") { return callback(false, "File " + file.name + " doesn't contain tiles that can be loaded"); } for(var i=1; i