diff --git a/lib/tiles/OfflineTilesEnablerLayer.js b/lib/tiles/OfflineTilesEnablerLayer.js index aa510d0..63e58ba 100644 --- a/lib/tiles/OfflineTilesEnablerLayer.js +++ b/lib/tiles/OfflineTilesEnablerLayer.js @@ -7,8 +7,9 @@ define([ "esri/geometry/Extent", "esri/layers/TileInfo", "esri/SpatialReference", + "esri/geometry/Polygon", "esri/layers/TiledMapServiceLayer" -], function(query, request, declare,LOD,Point,Extent,TileInfo,SpatialReference,TiledMapServerLayer) +], function(query, request, declare,LOD,Point,Extent,TileInfo,SpatialReference,Polygon,TiledMapServerLayer) { "use strict"; return declare("esri.OfflineTileEnablerLayer",[TiledMapServerLayer],{ @@ -27,7 +28,7 @@ define([ callback(false); } - this._tilesCore = new TilesCore(); + this._tilesCore = new O.esri.Tiles.TilesCore(); //For calculating minZoom and maxZoom Array.prototype.sortNumber = function(){return this.sort(function(a,b){return a - b})}; @@ -49,7 +50,7 @@ define([ this.offline = { online: isOnline, - store: new TilesStore(), + store: new O.esri.Tiles.TilesStore(), proxyPath: "../lib/resource-proxy/proxy.php" }; @@ -73,7 +74,7 @@ define([ alert("There was a problem retrieving tiled map info in OfflineTilesEnablerLayer."); } - this._tilesCore._parseGetTileInfo(result,function(tileResult){ + this._tilesCore._parseGetTileInfo(SpatialReference,LOD,Extent,TileInfo,Point,result,function(tileResult){ this.layerInfos = tileResult.resultObj.layers; this.minScale = tileResult.resultObj.minScale; this.maxScale = tileResult.resultObj.maxScale; @@ -128,7 +129,7 @@ define([ /* temporary URL returned immediately, as we haven't retrieved the image from the indexeddb yet */ var tileid = "void:/"+level+"/"+row+"/"+col; var img = null; - this._tilesCore._getTiles(img,this._imageType,url,tileid,this.offline.store); + this._tilesCore._getTiles(img,this._imageType,url,tileid,this.offline.store,query); return tileid; }, @@ -156,7 +157,7 @@ define([ */ getLevelEstimation: function(extent, level, tileSize) { - var tilingScheme = new TilingScheme(this); + var tilingScheme = new O.esri.Tiles.TilingScheme(this); var cellIds = tilingScheme.getAllCellIdsInExtent(extent,level); var levelEstimation = { @@ -303,7 +304,7 @@ define([ */ getTilePolygons : function(callback) // callback(Polygon polygon) or callback(null, error) { - this._tilesCore._getTilePolygons(this.offline.store,this.url,this,callback); + this._tilesCore._getTilePolygons(Polygon,this.offline.store,this.url,this,callback); }, /** @@ -336,7 +337,7 @@ define([ */ estimateTileSize : function(callback) { - this._tilesCore._estimateTileSize(this._lastTileUrl,this.offline.proxyPath,callback); + this._tilesCore._estimateTileSize(request,this._lastTileUrl,this.offline.proxyPath,callback); }, /** @@ -356,7 +357,7 @@ define([ * @returns Array */ getTileUrlsByExtent : function(extent,level){ - var tilingScheme = new TilingScheme(this); + var tilingScheme = new O.esri.Tiles.TilingScheme(this); var level_cell_ids = tilingScheme.getAllCellIdsInExtent(extent,level); var cells = []; diff --git a/lib/tiles/TilesCore.js b/lib/tiles/TilesCore.js index 5f57009..021a096 100644 --- a/lib/tiles/TilesCore.js +++ b/lib/tiles/TilesCore.js @@ -299,11 +299,13 @@ O.esri.Tiles.TilesCore = function(){ /** * Gets all the important bits out of the map services description page + * @param SpatialReference "esri/SpatialReference" + * @param LOD "esri/layers/LOD" * @param data The http response via f=pjson * @param callback callback({initExtent,fullExtent,tileInfo,resultObj}); * @private */ - this._parseGetTileInfo = function(data,callback){ + this._parseGetTileInfo = function(SpatialReference,LOD,Extent,TileInfo,Point,data,callback){ var fixedResponse = data.replace(/\\'/g, "'"); var resultObj = JSON.parse(fixedResponse); diff --git a/lib/tiles/offlineTilesEnabler.js b/lib/tiles/offlineTilesEnabler.js index c2407f8..9a23af4 100644 --- a/lib/tiles/offlineTilesEnabler.js +++ b/lib/tiles/offlineTilesEnabler.js @@ -1,8 +1,9 @@ define([ "dojo/query", "dojo/request", + "esri/geometry/Polygon", "dojo/_base/declare" - ], function(query, request, declare) + ], function(query, request, Polygon,declare) { "use strict"; return declare("esri.OfflineTilesEnabler",[],{ diff --git a/test/SpecRunner.offlineTilesEnablerLayer.html b/test/SpecRunner.offlineTilesEnablerLayer.html index e74353f..3882316 100644 --- a/test/SpecRunner.offlineTilesEnablerLayer.html +++ b/test/SpecRunner.offlineTilesEnablerLayer.html @@ -34,18 +34,25 @@ "esri/dijit/Scalebar", "esri/arcgis/utils", "esri/geometry", "dojo/dom", "dojo/on", "dojo/query", "esri/urlUtils", "esri/geometry/webMercatorUtils", - "tiles/OfflineTilesEnablerLayer", - "tiles/TilesCore", + "esri/layers/LOD", + "esri/geometry/Point", + "esri/geometry/Extent", + "esri/layers/TileInfo", + "esri/SpatialReference", + "esri/geometry/Polygon", + "../dist/offline-editor-tiles-advanced-src.js", "dojo/dom-construct", "dojo/domReady!"], function(Map, GraphicsLayer, Graphic, SimpleFillSymbol, Scalebar, esriUtils, geometry, dom, on, query, urlUtils, webMercatorUtils, - OfflineTilesEnablerLayer,TilesCore, + LOD,Point,Extent,TileInfo,SpatialReference,Polygon, + OfflineTilesEnablerLayer, domConstruct) { - g_basemapLayer = new OfflineTilesEnablerLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(evt){ + + g_basemapLayer = new esri.OfflineTileEnablerLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(evt){ console.log("Tile Layer Loaded."); },true); @@ -59,13 +66,13 @@ g_map.addLayer(g_basemapLayer); - tilesCore = new TilesCore(); + tilesCore = new O.esri.Tiles.TilesCore(); function test() { var jasmineEnv = jasmine.getEnv(); jasmineEnv.updateInterval = 1000; - jasmineEnv.defaultTimeoutInterval = 20000; // 20 sec + jasmineEnv.defaultTimeoutInterval = 5000; // 20 sec var htmlReporter = new jasmine.HtmlReporter(); jasmineEnv.addReporter(htmlReporter); diff --git a/test/spec/offlineTilesEnablerLayerSpec.js b/test/spec/offlineTilesEnablerLayerSpec.js index 0ff1223..ce7bd76 100644 --- a/test/spec/offlineTilesEnablerLayerSpec.js +++ b/test/spec/offlineTilesEnablerLayerSpec.js @@ -226,20 +226,36 @@ describe("offline enabler custom layer library", function() }) }); - it("verifies ability to retrieve layer info",function(done){ + async.it("verifies ability to retrieve layer info",function(done){ g_basemapLayer._getTileInfoPrivate("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(result){ var fixedResponse = result.replace(/\\'/g, "'"); var resultObj = JSON.parse(fixedResponse); expect(resultObj).toEqual(jasmine.any(Object)); + done(); }) }); - it("verifies ability to parse layer info",function(done){ - g_basemapLayer._getTileInfoPrivate("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(result){ - tilesCore._parseGetTileInfo(result,function(result){ - expect(result).toEqual(jasmine.any(Object)); + async.it("verifies ability to parse layer info",function(done){ + require(["esri/layers/LOD", + "esri/geometry/Point", + "esri/geometry/Extent", + "esri/layers/TileInfo", + "esri/SpatialReference", + "esri/geometry/Polygon"],function(LOD,Point,Extent,TileInfo,SpatialReference){ + + + g_basemapLayer._getTileInfoPrivate("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(result){ + tilesCore._parseGetTileInfo(SpatialReference,LOD,Extent,TileInfo,Point,result,function(result){ + expect(result.resultObj).toEqual(jasmine.any(Object)); + expect(result.initExtent.type).toEqual("extent"); + expect(result.fullExtent.type).toEqual("extent"); + expect(result.tileInfo.format).toEqual("JPEG"); + done(); + }) }) + }) + }); async.it("get all tile polygons within extent",function(done){