refactored parseGetTiledInfo to TilesCore

This commit is contained in:
Andy Gup 2014-08-11 14:37:22 -06:00
parent deaac929b9
commit 8e148eb426
3 changed files with 56 additions and 50 deletions

View File

@ -79,7 +79,7 @@ define([
alert("There was a problem retrieving tiled map info in OfflineTilesEnablerLayer.");
}
this.parseGetTileInfo(result,function(tileResult){
this._tilesCore._parseGetTileInfo(result,function(tileResult){
this.layerInfos = tileResult.resultObj.layers;
this.minScale = tileResult.resultObj.minScale;
this.maxScale = tileResult.resultObj.maxScale;
@ -573,53 +573,6 @@ define([
}.bind(this));
},
parseGetTileInfo: function(data,callback){
var fixedResponse = data.replace(/\\'/g, "'");
var resultObj = JSON.parse(fixedResponse);
var spatialRef = new SpatialReference({wkid:resultObj.spatialReference.wkid});
var lods = [];
var lodsObj = JSON.parse(data,function(key,value){
if(((typeof key == 'number') || (key % 1 == 0)) && (typeof value === "object")){
var l = new LOD();
l.level = value.level;
l.resolution = value.resolution;
l.scale = value.scale;
if(value.hasOwnProperty("level")) lods.push(l);
return value;
}
else{
return value;
}
});
var initialExtent = new Extent(
parseFloat(resultObj.initialExtent.xmin),
parseFloat(resultObj.initialExtent.ymin),
parseFloat(resultObj.initialExtent.xmax),
parseFloat(resultObj.initialExtent.ymax),
spatialRef
);
var fullExtent = new Extent(
parseFloat(resultObj.fullExtent.xmin),
parseFloat(resultObj.fullExtent.ymin),
parseFloat(resultObj.fullExtent.xmax),
parseFloat(resultObj.fullExtent.ymax),
spatialRef
);
var tileInfo = new TileInfo(resultObj.tileInfo);
var origin = new Point(tileInfo.origin.x,tileInfo.origin.y,spatialRef)
tileInfo.origin = origin;
tileInfo.lods = lods;
callback({initExtent:initialExtent,fullExtent:fullExtent,tileInfo:tileInfo,resultObj:resultObj});
},
/**
* Test for localStorage functionality
* @returns {boolean}

View File

@ -4,11 +4,17 @@
*/
define([
"dojo/query",
"esri/geometry/Point",
"esri/geometry/Extent",
"esri/SpatialReference",
"esri/layers/TileInfo",
"esri/layers/LOD",
"tiles/base64utils",
],
function(query,Base64Utils){
function(query,Point,Extent,SpatialReference,TileInfo,LOD,Base64Utils){
"use strict";
var TilesCore = function(){
this._storeTile= function(url,proxyPath,store,callback) // callback(success, msg)
{
url = url.split("?")[0];
@ -41,6 +47,53 @@ define([
};
req.send(null);
}
this._parseGetTileInfo = function(data,callback){
var fixedResponse = data.replace(/\\'/g, "'");
var resultObj = JSON.parse(fixedResponse);
var spatialRef = new SpatialReference({wkid:resultObj.spatialReference.wkid});
var lods = [];
var lodsObj = JSON.parse(data,function(key,value){
if(((typeof key == 'number') || (key % 1 == 0)) && (typeof value === "object")){
var l = new LOD();
l.level = value.level;
l.resolution = value.resolution;
l.scale = value.scale;
if(value.hasOwnProperty("level")) lods.push(l);
return value;
}
else{
return value;
}
});
var initialExtent = new Extent(
parseFloat(resultObj.initialExtent.xmin),
parseFloat(resultObj.initialExtent.ymin),
parseFloat(resultObj.initialExtent.xmax),
parseFloat(resultObj.initialExtent.ymax),
spatialRef
);
var fullExtent = new Extent(
parseFloat(resultObj.fullExtent.xmin),
parseFloat(resultObj.fullExtent.ymin),
parseFloat(resultObj.fullExtent.xmax),
parseFloat(resultObj.fullExtent.ymax),
spatialRef
);
var tileInfo = new TileInfo(resultObj.tileInfo);
var origin = new Point(tileInfo.origin.x,tileInfo.origin.y,spatialRef)
tileInfo.origin = origin;
tileInfo.lods = lods;
callback({initExtent:initialExtent,fullExtent:fullExtent,tileInfo:tileInfo,resultObj:resultObj});
}
}
return TilesCore;

View File

@ -236,7 +236,7 @@ describe("offline enabler custom layer library", function()
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){
g_basemapLayer.parseGetTileInfo(result,function(result){
tilesCore._parseGetTileInfo(result,function(result){
expect(result).toEqual(jasmine.any(Object));
})
})