initial refactor offlineTilesEnabler & OfflineTilesEnablerLayer

This commit is contained in:
Andy Gup 2014-09-03 13:44:10 -06:00
parent 0e1d793976
commit 08e189d763
5 changed files with 49 additions and 22 deletions

View File

@ -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 = [];

View File

@ -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);

View File

@ -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",[],{

View File

@ -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);

View File

@ -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){