Create ol.source.UrlTile
This commit is contained in:
@@ -6,15 +6,10 @@ goog.require('goog.events.EventType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.ImageTile');
|
||||
goog.require('ol.TileCache');
|
||||
goog.require('ol.TileCoord');
|
||||
goog.require('ol.TileLoadFunctionType');
|
||||
goog.require('ol.TileState');
|
||||
goog.require('ol.TileUrlFunction');
|
||||
goog.require('ol.TileUrlFunctionType');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.reproj.Tile');
|
||||
goog.require('ol.source.Tile');
|
||||
goog.require('ol.source.TileEvent');
|
||||
goog.require('ol.source.UrlTile');
|
||||
|
||||
|
||||
|
||||
@@ -24,7 +19,7 @@ goog.require('ol.source.TileEvent');
|
||||
*
|
||||
* @constructor
|
||||
* @fires ol.source.TileEvent
|
||||
* @extends {ol.source.Tile}
|
||||
* @extends {ol.source.UrlTile}
|
||||
* @param {olx.source.TileImageOptions} options Image tile options.
|
||||
* @api
|
||||
*/
|
||||
@@ -39,18 +34,13 @@ ol.source.TileImage = function(options) {
|
||||
state: options.state !== undefined ?
|
||||
/** @type {ol.source.State} */ (options.state) : undefined,
|
||||
tileGrid: options.tileGrid,
|
||||
tileLoadFunction: goog.isDef(options.tileLoadFunction) ?
|
||||
options.tileLoadFunction : ol.source.TileImage.defaultTileLoadFunction,
|
||||
tilePixelRatio: options.tilePixelRatio,
|
||||
tileUrlFunction: options.tileUrlFunction,
|
||||
wrapX: options.wrapX
|
||||
});
|
||||
|
||||
/**
|
||||
* @protected
|
||||
* @type {ol.TileUrlFunctionType}
|
||||
*/
|
||||
this.tileUrlFunction = options.tileUrlFunction !== undefined ?
|
||||
options.tileUrlFunction :
|
||||
ol.TileUrlFunction.nullTileUrlFunction;
|
||||
|
||||
/**
|
||||
* @protected
|
||||
* @type {?string}
|
||||
@@ -58,13 +48,6 @@ ol.source.TileImage = function(options) {
|
||||
this.crossOrigin =
|
||||
options.crossOrigin !== undefined ? options.crossOrigin : null;
|
||||
|
||||
/**
|
||||
* @protected
|
||||
* @type {ol.TileLoadFunctionType}
|
||||
*/
|
||||
this.tileLoadFunction = options.tileLoadFunction !== undefined ?
|
||||
options.tileLoadFunction : ol.source.TileImage.defaultTileLoadFunction;
|
||||
|
||||
/**
|
||||
* @protected
|
||||
* @type {function(new: ol.ImageTile, ol.TileCoord, ol.TileState, string,
|
||||
@@ -97,16 +80,7 @@ ol.source.TileImage = function(options) {
|
||||
*/
|
||||
this.renderReprojectionEdges_ = false;
|
||||
};
|
||||
goog.inherits(ol.source.TileImage, ol.source.Tile);
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.ImageTile} imageTile Image tile.
|
||||
* @param {string} src Source.
|
||||
*/
|
||||
ol.source.TileImage.defaultTileLoadFunction = function(imageTile, src) {
|
||||
imageTile.getImage().src = src;
|
||||
};
|
||||
goog.inherits(ol.source.TileImage, ol.source.UrlTile);
|
||||
|
||||
|
||||
/**
|
||||
@@ -249,7 +223,7 @@ ol.source.TileImage.prototype.getTileInternal =
|
||||
this.crossOrigin,
|
||||
this.tileLoadFunction);
|
||||
goog.events.listen(tile, goog.events.EventType.CHANGE,
|
||||
this.handleTileChange_, false, this);
|
||||
this.handleTileChange, false, this);
|
||||
|
||||
this.tileCache.set(tileCoordKey, tile);
|
||||
return tile;
|
||||
@@ -257,50 +231,6 @@ ol.source.TileImage.prototype.getTileInternal =
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Return the tile load function of the source.
|
||||
* @return {ol.TileLoadFunctionType} TileLoadFunction
|
||||
* @api
|
||||
*/
|
||||
ol.source.TileImage.prototype.getTileLoadFunction = function() {
|
||||
return this.tileLoadFunction;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Return the tile URL function of the source.
|
||||
* @return {ol.TileUrlFunctionType} TileUrlFunction
|
||||
* @api
|
||||
*/
|
||||
ol.source.TileImage.prototype.getTileUrlFunction = function() {
|
||||
return this.tileUrlFunction;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Handle tile change events.
|
||||
* @param {goog.events.Event} event Event.
|
||||
* @private
|
||||
*/
|
||||
ol.source.TileImage.prototype.handleTileChange_ = function(event) {
|
||||
var tile = /** @type {ol.Tile} */ (event.target);
|
||||
switch (tile.getState()) {
|
||||
case ol.TileState.LOADING:
|
||||
this.dispatchEvent(
|
||||
new ol.source.TileEvent(ol.source.TileEventType.TILELOADSTART, tile));
|
||||
break;
|
||||
case ol.TileState.LOADED:
|
||||
this.dispatchEvent(
|
||||
new ol.source.TileEvent(ol.source.TileEventType.TILELOADEND, tile));
|
||||
break;
|
||||
case ol.TileState.ERROR:
|
||||
this.dispatchEvent(
|
||||
new ol.source.TileEvent(ol.source.TileEventType.TILELOADERROR, tile));
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Sets whether to render reprojection edges or not (usually for debugging).
|
||||
* @param {boolean} render Render the edges.
|
||||
@@ -346,41 +276,9 @@ ol.source.TileImage.prototype.setTileGridForProjection =
|
||||
|
||||
|
||||
/**
|
||||
* Set the tile load function of the source.
|
||||
* @param {ol.TileLoadFunctionType} tileLoadFunction Tile load function.
|
||||
* @api
|
||||
* @param {ol.ImageTile} imageTile Image tile.
|
||||
* @param {string} src Source.
|
||||
*/
|
||||
ol.source.TileImage.prototype.setTileLoadFunction = function(tileLoadFunction) {
|
||||
this.tileCache.clear();
|
||||
this.tileCacheForProjection = {};
|
||||
this.tileLoadFunction = tileLoadFunction;
|
||||
this.changed();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set the tile URL function of the source.
|
||||
* @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function.
|
||||
* @api
|
||||
*/
|
||||
ol.source.TileImage.prototype.setTileUrlFunction = function(tileUrlFunction) {
|
||||
// FIXME It should be possible to be more intelligent and avoid clearing the
|
||||
// FIXME cache. The tile URL function would need to be incorporated into the
|
||||
// FIXME cache key somehow.
|
||||
this.tileCache.clear();
|
||||
this.tileCacheForProjection = {};
|
||||
this.tileUrlFunction = tileUrlFunction;
|
||||
this.changed();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.source.TileImage.prototype.useTile = function(z, x, y, projection) {
|
||||
var tileCache = this.getTileCacheForProjection(projection);
|
||||
var tileCoordKey = this.getKeyZXY(z, x, y);
|
||||
if (tileCache && tileCache.containsKey(tileCoordKey)) {
|
||||
tileCache.get(tileCoordKey);
|
||||
}
|
||||
ol.source.TileImage.defaultTileLoadFunction = function(imageTile, src) {
|
||||
imageTile.getImage().src = src;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user