mirror of
https://github.com/Esri/offline-editor-js.git
synced 2025-12-15 15:20:05 +00:00
initial refactor offlineTilesEnabler & OfflineTilesEnablerLayer
This commit is contained in:
parent
0e1d793976
commit
08e189d763
@ -7,8 +7,9 @@ define([
|
|||||||
"esri/geometry/Extent",
|
"esri/geometry/Extent",
|
||||||
"esri/layers/TileInfo",
|
"esri/layers/TileInfo",
|
||||||
"esri/SpatialReference",
|
"esri/SpatialReference",
|
||||||
|
"esri/geometry/Polygon",
|
||||||
"esri/layers/TiledMapServiceLayer"
|
"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";
|
"use strict";
|
||||||
return declare("esri.OfflineTileEnablerLayer",[TiledMapServerLayer],{
|
return declare("esri.OfflineTileEnablerLayer",[TiledMapServerLayer],{
|
||||||
@ -27,7 +28,7 @@ define([
|
|||||||
callback(false);
|
callback(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._tilesCore = new TilesCore();
|
this._tilesCore = new O.esri.Tiles.TilesCore();
|
||||||
|
|
||||||
//For calculating minZoom and maxZoom
|
//For calculating minZoom and maxZoom
|
||||||
Array.prototype.sortNumber = function(){return this.sort(function(a,b){return a - b})};
|
Array.prototype.sortNumber = function(){return this.sort(function(a,b){return a - b})};
|
||||||
@ -49,7 +50,7 @@ define([
|
|||||||
|
|
||||||
this.offline = {
|
this.offline = {
|
||||||
online: isOnline,
|
online: isOnline,
|
||||||
store: new TilesStore(),
|
store: new O.esri.Tiles.TilesStore(),
|
||||||
proxyPath: "../lib/resource-proxy/proxy.php"
|
proxyPath: "../lib/resource-proxy/proxy.php"
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ define([
|
|||||||
alert("There was a problem retrieving tiled map info in OfflineTilesEnablerLayer.");
|
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.layerInfos = tileResult.resultObj.layers;
|
||||||
this.minScale = tileResult.resultObj.minScale;
|
this.minScale = tileResult.resultObj.minScale;
|
||||||
this.maxScale = tileResult.resultObj.maxScale;
|
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 */
|
/* temporary URL returned immediately, as we haven't retrieved the image from the indexeddb yet */
|
||||||
var tileid = "void:/"+level+"/"+row+"/"+col;
|
var tileid = "void:/"+level+"/"+row+"/"+col;
|
||||||
var img = null;
|
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;
|
return tileid;
|
||||||
},
|
},
|
||||||
@ -156,7 +157,7 @@ define([
|
|||||||
*/
|
*/
|
||||||
getLevelEstimation: function(extent, level, tileSize)
|
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 cellIds = tilingScheme.getAllCellIdsInExtent(extent,level);
|
||||||
|
|
||||||
var levelEstimation = {
|
var levelEstimation = {
|
||||||
@ -303,7 +304,7 @@ define([
|
|||||||
*/
|
*/
|
||||||
getTilePolygons : function(callback) // callback(Polygon polygon) or callback(null, error)
|
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)
|
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
|
* @returns Array
|
||||||
*/
|
*/
|
||||||
getTileUrlsByExtent : function(extent,level){
|
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 level_cell_ids = tilingScheme.getAllCellIdsInExtent(extent,level);
|
||||||
var cells = [];
|
var cells = [];
|
||||||
|
|
||||||
|
|||||||
@ -299,11 +299,13 @@ O.esri.Tiles.TilesCore = function(){
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all the important bits out of the map services description page
|
* 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 data The http response via f=pjson
|
||||||
* @param callback callback({initExtent,fullExtent,tileInfo,resultObj});
|
* @param callback callback({initExtent,fullExtent,tileInfo,resultObj});
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
this._parseGetTileInfo = function(data,callback){
|
this._parseGetTileInfo = function(SpatialReference,LOD,Extent,TileInfo,Point,data,callback){
|
||||||
|
|
||||||
var fixedResponse = data.replace(/\\'/g, "'");
|
var fixedResponse = data.replace(/\\'/g, "'");
|
||||||
var resultObj = JSON.parse(fixedResponse);
|
var resultObj = JSON.parse(fixedResponse);
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
define([
|
define([
|
||||||
"dojo/query",
|
"dojo/query",
|
||||||
"dojo/request",
|
"dojo/request",
|
||||||
|
"esri/geometry/Polygon",
|
||||||
"dojo/_base/declare"
|
"dojo/_base/declare"
|
||||||
], function(query, request, declare)
|
], function(query, request, Polygon,declare)
|
||||||
{
|
{
|
||||||
"use strict";
|
"use strict";
|
||||||
return declare("esri.OfflineTilesEnabler",[],{
|
return declare("esri.OfflineTilesEnabler",[],{
|
||||||
|
|||||||
@ -34,18 +34,25 @@
|
|||||||
"esri/dijit/Scalebar", "esri/arcgis/utils", "esri/geometry",
|
"esri/dijit/Scalebar", "esri/arcgis/utils", "esri/geometry",
|
||||||
"dojo/dom", "dojo/on", "dojo/query",
|
"dojo/dom", "dojo/on", "dojo/query",
|
||||||
"esri/urlUtils", "esri/geometry/webMercatorUtils",
|
"esri/urlUtils", "esri/geometry/webMercatorUtils",
|
||||||
"tiles/OfflineTilesEnablerLayer",
|
"esri/layers/LOD",
|
||||||
"tiles/TilesCore",
|
"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!"],
|
"dojo/dom-construct", "dojo/domReady!"],
|
||||||
function(Map,
|
function(Map,
|
||||||
GraphicsLayer, Graphic, SimpleFillSymbol,
|
GraphicsLayer, Graphic, SimpleFillSymbol,
|
||||||
Scalebar, esriUtils, geometry,
|
Scalebar, esriUtils, geometry,
|
||||||
dom, on, query,
|
dom, on, query,
|
||||||
urlUtils, webMercatorUtils,
|
urlUtils, webMercatorUtils,
|
||||||
OfflineTilesEnablerLayer,TilesCore,
|
LOD,Point,Extent,TileInfo,SpatialReference,Polygon,
|
||||||
|
OfflineTilesEnablerLayer,
|
||||||
domConstruct)
|
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.");
|
console.log("Tile Layer Loaded.");
|
||||||
},true);
|
},true);
|
||||||
|
|
||||||
@ -59,13 +66,13 @@
|
|||||||
|
|
||||||
g_map.addLayer(g_basemapLayer);
|
g_map.addLayer(g_basemapLayer);
|
||||||
|
|
||||||
tilesCore = new TilesCore();
|
tilesCore = new O.esri.Tiles.TilesCore();
|
||||||
|
|
||||||
function test()
|
function test()
|
||||||
{
|
{
|
||||||
var jasmineEnv = jasmine.getEnv();
|
var jasmineEnv = jasmine.getEnv();
|
||||||
jasmineEnv.updateInterval = 1000;
|
jasmineEnv.updateInterval = 1000;
|
||||||
jasmineEnv.defaultTimeoutInterval = 20000; // 20 sec
|
jasmineEnv.defaultTimeoutInterval = 5000; // 20 sec
|
||||||
var htmlReporter = new jasmine.HtmlReporter();
|
var htmlReporter = new jasmine.HtmlReporter();
|
||||||
|
|
||||||
jasmineEnv.addReporter(htmlReporter);
|
jasmineEnv.addReporter(htmlReporter);
|
||||||
|
|||||||
@ -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){
|
g_basemapLayer._getTileInfoPrivate("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer",function(result){
|
||||||
var fixedResponse = result.replace(/\\'/g, "'");
|
var fixedResponse = result.replace(/\\'/g, "'");
|
||||||
var resultObj = JSON.parse(fixedResponse);
|
var resultObj = JSON.parse(fixedResponse);
|
||||||
expect(resultObj).toEqual(jasmine.any(Object));
|
expect(resultObj).toEqual(jasmine.any(Object));
|
||||||
|
done();
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
it("verifies ability to parse layer info",function(done){
|
async.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){
|
require(["esri/layers/LOD",
|
||||||
tilesCore._parseGetTileInfo(result,function(result){
|
"esri/geometry/Point",
|
||||||
expect(result).toEqual(jasmine.any(Object));
|
"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){
|
async.it("get all tile polygons within extent",function(done){
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user