Toward a fix for ol.tilegrid
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
/* eslint-disable openlayers-internal/no-unused-requires */
|
||||
|
||||
goog.require('ol.Map');
|
||||
goog.require('ol.View');
|
||||
goog.require('ol.format.MVT');
|
||||
@@ -9,6 +10,7 @@ goog.require('ol.style.Icon');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.style.Text');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
var key = 'pk.eyJ1IjoiYWhvY2V2YXIiLCJhIjoiRk1kMWZaSSJ9.E5BkluenyWQMsBLsuByrmg';
|
||||
|
||||
@@ -7,6 +7,7 @@ goog.require('ol.source.VectorTile');
|
||||
goog.require('ol.style.Fill');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
var format = new ol.format.TopoJSON();
|
||||
|
||||
@@ -11,6 +11,7 @@ goog.require('ol.loadingstrategy');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.Vector');
|
||||
goog.require('ol.source.XYZ');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
var serviceUrl = 'http://services.arcgis.com/rOo16HdIMeOBI4Mb/arcgis/rest/' +
|
||||
|
||||
@@ -10,6 +10,7 @@ goog.require('ol.source.XYZ');
|
||||
goog.require('ol.style.Fill');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
var serviceUrl = 'http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/' +
|
||||
|
||||
@@ -12,6 +12,7 @@ goog.require('ol.style.Circle');
|
||||
goog.require('ol.style.Fill');
|
||||
goog.require('ol.style.Stroke');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
var styles = {
|
||||
'amenity': {
|
||||
|
||||
@@ -2,6 +2,7 @@ goog.provide('ol.Attribution');
|
||||
|
||||
goog.require('ol.TileRange');
|
||||
goog.require('ol.math');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,7 @@ goog.require('ol.proj');
|
||||
goog.require('ol.source.State');
|
||||
goog.require('ol.source.TileImage');
|
||||
goog.require('ol.tilecoord');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
goog.provide('ol.source.Tile');
|
||||
goog.provide('ol.source.TileEvent');
|
||||
|
||||
goog.require('ol.events.Event');
|
||||
goog.require('ol');
|
||||
goog.require('ol.TileCache');
|
||||
goog.require('ol.TileState');
|
||||
goog.require('ol.events.Event');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.size');
|
||||
goog.require('ol.source.Source');
|
||||
goog.require('ol.tilecoord');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,7 @@ goog.require('ol.events.EventType');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.reproj.Tile');
|
||||
goog.require('ol.source.UrlTile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,6 +14,7 @@ goog.require('ol.net');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.State');
|
||||
goog.require('ol.source.TileImage');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,6 +12,7 @@ goog.require('ol.net');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.State');
|
||||
goog.require('ol.source.Tile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
goog.provide('ol.source.XYZ');
|
||||
|
||||
goog.require('ol.source.TileImage');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
goog.provide('ol.tilecoord');
|
||||
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
133
src/ol/tilegrid/index.js
Normal file
133
src/ol/tilegrid/index.js
Normal file
@@ -0,0 +1,133 @@
|
||||
goog.provide('ol.tilegrid');
|
||||
|
||||
goog.require('ol.extent.Corner');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.proj.METERS_PER_UNIT');
|
||||
goog.require('ol.proj.Units');
|
||||
goog.require('ol.tilegrid.TileGrid');
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.proj.Projection} projection Projection.
|
||||
* @return {!ol.tilegrid.TileGrid} Default tile grid for the passed projection.
|
||||
*/
|
||||
ol.tilegrid.getForProjection = function(projection) {
|
||||
var tileGrid = projection.getDefaultTileGrid();
|
||||
if (!tileGrid) {
|
||||
tileGrid = ol.tilegrid.createForProjection(projection);
|
||||
projection.setDefaultTileGrid(tileGrid);
|
||||
}
|
||||
return tileGrid;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {number|ol.Size=} opt_tileSize Tile size (default uses
|
||||
* ol.DEFAULT_TILE_SIZE).
|
||||
* @param {ol.extent.Corner=} opt_corner Extent corner (default is
|
||||
* ol.extent.Corner.TOP_LEFT).
|
||||
* @return {!ol.tilegrid.TileGrid} TileGrid instance.
|
||||
*/
|
||||
ol.tilegrid.createForExtent = function(extent, opt_maxZoom, opt_tileSize, opt_corner) {
|
||||
var corner = opt_corner !== undefined ?
|
||||
opt_corner : ol.extent.Corner.TOP_LEFT;
|
||||
|
||||
var resolutions = ol.tilegrid.resolutionsFromExtent(
|
||||
extent, opt_maxZoom, opt_tileSize);
|
||||
|
||||
return new ol.tilegrid.TileGrid({
|
||||
extent: extent,
|
||||
origin: ol.extent.getCorner(extent, corner),
|
||||
resolutions: resolutions,
|
||||
tileSize: opt_tileSize
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a tile grid with a standard XYZ tiling scheme.
|
||||
* @param {olx.tilegrid.XYZOptions=} opt_options Tile grid options.
|
||||
* @return {ol.tilegrid.TileGrid} Tile grid instance.
|
||||
* @api
|
||||
*/
|
||||
ol.tilegrid.createXYZ = function(opt_options) {
|
||||
var options = /** @type {olx.tilegrid.TileGridOptions} */ ({});
|
||||
ol.obj.assign(options, opt_options !== undefined ?
|
||||
opt_options : /** @type {olx.tilegrid.XYZOptions} */ ({}));
|
||||
if (options.extent === undefined) {
|
||||
options.extent = ol.proj.get('EPSG:3857').getExtent();
|
||||
}
|
||||
options.resolutions = ol.tilegrid.resolutionsFromExtent(
|
||||
options.extent, options.maxZoom, options.tileSize);
|
||||
delete options.maxZoom;
|
||||
|
||||
return new ol.tilegrid.TileGrid(options);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Create a resolutions array from an extent. A zoom factor of 2 is assumed.
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {number|ol.Size=} opt_tileSize Tile size (default uses
|
||||
* ol.DEFAULT_TILE_SIZE).
|
||||
* @return {!Array.<number>} Resolutions array.
|
||||
*/
|
||||
ol.tilegrid.resolutionsFromExtent = function(extent, opt_maxZoom, opt_tileSize) {
|
||||
var maxZoom = opt_maxZoom !== undefined ?
|
||||
opt_maxZoom : ol.DEFAULT_MAX_ZOOM;
|
||||
|
||||
var height = ol.extent.getHeight(extent);
|
||||
var width = ol.extent.getWidth(extent);
|
||||
|
||||
var tileSize = ol.size.toSize(opt_tileSize !== undefined ?
|
||||
opt_tileSize : ol.DEFAULT_TILE_SIZE);
|
||||
var maxResolution = Math.max(
|
||||
width / tileSize[0], height / tileSize[1]);
|
||||
|
||||
var length = maxZoom + 1;
|
||||
var resolutions = new Array(length);
|
||||
for (var z = 0; z < length; ++z) {
|
||||
resolutions[z] = maxResolution / Math.pow(2, z);
|
||||
}
|
||||
return resolutions;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.ProjectionLike} projection Projection.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {ol.Size=} opt_tileSize Tile size (default uses ol.DEFAULT_TILE_SIZE).
|
||||
* @param {ol.extent.Corner=} opt_corner Extent corner (default is
|
||||
* ol.extent.Corner.BOTTOM_LEFT).
|
||||
* @return {!ol.tilegrid.TileGrid} TileGrid instance.
|
||||
*/
|
||||
ol.tilegrid.createForProjection = function(projection, opt_maxZoom, opt_tileSize, opt_corner) {
|
||||
var extent = ol.tilegrid.extentFromProjection(projection);
|
||||
return ol.tilegrid.createForExtent(
|
||||
extent, opt_maxZoom, opt_tileSize, opt_corner);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Generate a tile grid extent from a projection. If the projection has an
|
||||
* extent, it is used. If not, a global extent is assumed.
|
||||
* @param {ol.ProjectionLike} projection Projection.
|
||||
* @return {ol.Extent} Extent.
|
||||
*/
|
||||
ol.tilegrid.extentFromProjection = function(projection) {
|
||||
projection = ol.proj.get(projection);
|
||||
var extent = projection.getExtent();
|
||||
if (!extent) {
|
||||
var half = 180 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
|
||||
projection.getMetersPerUnit();
|
||||
extent = ol.extent.createOrUpdate(-half, -half, half, half);
|
||||
}
|
||||
return extent;
|
||||
};
|
||||
@@ -4,12 +4,7 @@ goog.require('ol');
|
||||
goog.require('ol.TileRange');
|
||||
goog.require('ol.array');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.extent.Corner');
|
||||
goog.require('ol.math');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.proj.METERS_PER_UNIT');
|
||||
goog.require('ol.proj.Units');
|
||||
goog.require('ol.size');
|
||||
goog.require('ol.tilecoord');
|
||||
|
||||
@@ -507,128 +502,3 @@ ol.tilegrid.TileGrid.prototype.calculateTileRanges_ = function(extent) {
|
||||
}
|
||||
this.fullTileRanges_ = fullTileRanges;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.proj.Projection} projection Projection.
|
||||
* @return {!ol.tilegrid.TileGrid} Default tile grid for the passed projection.
|
||||
*/
|
||||
ol.tilegrid.getForProjection = function(projection) {
|
||||
var tileGrid = projection.getDefaultTileGrid();
|
||||
if (!tileGrid) {
|
||||
tileGrid = ol.tilegrid.createForProjection(projection);
|
||||
projection.setDefaultTileGrid(tileGrid);
|
||||
}
|
||||
return tileGrid;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {number|ol.Size=} opt_tileSize Tile size (default uses
|
||||
* ol.DEFAULT_TILE_SIZE).
|
||||
* @param {ol.extent.Corner=} opt_corner Extent corner (default is
|
||||
* ol.extent.Corner.TOP_LEFT).
|
||||
* @return {!ol.tilegrid.TileGrid} TileGrid instance.
|
||||
*/
|
||||
ol.tilegrid.createForExtent = function(extent, opt_maxZoom, opt_tileSize, opt_corner) {
|
||||
var corner = opt_corner !== undefined ?
|
||||
opt_corner : ol.extent.Corner.TOP_LEFT;
|
||||
|
||||
var resolutions = ol.tilegrid.resolutionsFromExtent(
|
||||
extent, opt_maxZoom, opt_tileSize);
|
||||
|
||||
return new ol.tilegrid.TileGrid({
|
||||
extent: extent,
|
||||
origin: ol.extent.getCorner(extent, corner),
|
||||
resolutions: resolutions,
|
||||
tileSize: opt_tileSize
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Creates a tile grid with a standard XYZ tiling scheme.
|
||||
* @param {olx.tilegrid.XYZOptions=} opt_options Tile grid options.
|
||||
* @return {ol.tilegrid.TileGrid} Tile grid instance.
|
||||
* @api
|
||||
*/
|
||||
ol.tilegrid.createXYZ = function(opt_options) {
|
||||
var options = /** @type {olx.tilegrid.TileGridOptions} */ ({});
|
||||
ol.obj.assign(options, opt_options !== undefined ?
|
||||
opt_options : /** @type {olx.tilegrid.XYZOptions} */ ({}));
|
||||
if (options.extent === undefined) {
|
||||
options.extent = ol.proj.get('EPSG:3857').getExtent();
|
||||
}
|
||||
options.resolutions = ol.tilegrid.resolutionsFromExtent(
|
||||
options.extent, options.maxZoom, options.tileSize);
|
||||
delete options.maxZoom;
|
||||
|
||||
return new ol.tilegrid.TileGrid(options);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Create a resolutions array from an extent. A zoom factor of 2 is assumed.
|
||||
* @param {ol.Extent} extent Extent.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {number|ol.Size=} opt_tileSize Tile size (default uses
|
||||
* ol.DEFAULT_TILE_SIZE).
|
||||
* @return {!Array.<number>} Resolutions array.
|
||||
*/
|
||||
ol.tilegrid.resolutionsFromExtent = function(extent, opt_maxZoom, opt_tileSize) {
|
||||
var maxZoom = opt_maxZoom !== undefined ?
|
||||
opt_maxZoom : ol.DEFAULT_MAX_ZOOM;
|
||||
|
||||
var height = ol.extent.getHeight(extent);
|
||||
var width = ol.extent.getWidth(extent);
|
||||
|
||||
var tileSize = ol.size.toSize(opt_tileSize !== undefined ?
|
||||
opt_tileSize : ol.DEFAULT_TILE_SIZE);
|
||||
var maxResolution = Math.max(
|
||||
width / tileSize[0], height / tileSize[1]);
|
||||
|
||||
var length = maxZoom + 1;
|
||||
var resolutions = new Array(length);
|
||||
for (var z = 0; z < length; ++z) {
|
||||
resolutions[z] = maxResolution / Math.pow(2, z);
|
||||
}
|
||||
return resolutions;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.ProjectionLike} projection Projection.
|
||||
* @param {number=} opt_maxZoom Maximum zoom level (default is
|
||||
* ol.DEFAULT_MAX_ZOOM).
|
||||
* @param {ol.Size=} opt_tileSize Tile size (default uses ol.DEFAULT_TILE_SIZE).
|
||||
* @param {ol.extent.Corner=} opt_corner Extent corner (default is
|
||||
* ol.extent.Corner.BOTTOM_LEFT).
|
||||
* @return {!ol.tilegrid.TileGrid} TileGrid instance.
|
||||
*/
|
||||
ol.tilegrid.createForProjection = function(projection, opt_maxZoom, opt_tileSize, opt_corner) {
|
||||
var extent = ol.tilegrid.extentFromProjection(projection);
|
||||
return ol.tilegrid.createForExtent(
|
||||
extent, opt_maxZoom, opt_tileSize, opt_corner);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Generate a tile grid extent from a projection. If the projection has an
|
||||
* extent, it is used. If not, a global extent is assumed.
|
||||
* @param {ol.ProjectionLike} projection Projection.
|
||||
* @return {ol.Extent} Extent.
|
||||
*/
|
||||
ol.tilegrid.extentFromProjection = function(projection) {
|
||||
projection = ol.proj.get(projection);
|
||||
var extent = projection.getExtent();
|
||||
if (!extent) {
|
||||
var half = 180 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
|
||||
projection.getMetersPerUnit();
|
||||
extent = ol.extent.createOrUpdate(-half, -half, half, half);
|
||||
}
|
||||
return extent;
|
||||
};
|
||||
|
||||
@@ -13,6 +13,7 @@ goog.require('ol.renderer.canvas.VectorTileLayer');
|
||||
goog.require('ol.source.VectorTile');
|
||||
goog.require('ol.style.Style');
|
||||
goog.require('ol.style.Text');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.renderer.canvas.VectorTileLayer', function() {
|
||||
|
||||
@@ -4,6 +4,7 @@ goog.require('ol.ImageTile');
|
||||
goog.require('ol.events');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.reproj.Tile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.reproj.Tile', function() {
|
||||
|
||||
@@ -7,6 +7,7 @@ goog.require('ol.proj');
|
||||
goog.require('ol.proj.Projection');
|
||||
goog.require('ol.reproj.Tile');
|
||||
goog.require('ol.source.TileImage');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.source.TileImage', function() {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
goog.provide('ol.test.source.TileWMS');
|
||||
|
||||
goog.require('ol.ImageTile');
|
||||
goog.require('ol.source.TileWMS');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.TileWMS');
|
||||
goog.require('ol.tilegrid');
|
||||
goog.require('ol.tilegrid.TileGrid');
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ goog.provide('ol.test.source.UrlTile');
|
||||
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.UrlTile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.source.UrlTile', function() {
|
||||
|
||||
@@ -4,6 +4,7 @@ goog.require('ol.VectorTile');
|
||||
goog.require('ol.format.MVT');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.VectorTile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.source.VectorTile', function() {
|
||||
|
||||
@@ -4,6 +4,7 @@ goog.require('ol.source.Tile');
|
||||
goog.require('ol.source.TileImage');
|
||||
goog.require('ol.source.UrlTile');
|
||||
goog.require('ol.source.XYZ');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.source.XYZ', function() {
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
goog.provide('ol.test.TileGrid');
|
||||
|
||||
goog.require('ol.TileRange');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.proj.METERS_PER_UNIT');
|
||||
goog.require('ol.proj.EPSG3857');
|
||||
goog.require('ol.proj.METERS_PER_UNIT');
|
||||
goog.require('ol.proj.Projection');
|
||||
goog.require('ol.TileRange');
|
||||
goog.require('ol.tilegrid');
|
||||
goog.require('ol.tilegrid.TileGrid');
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
goog.provide('ol.test.TileUrlFunction');
|
||||
|
||||
goog.require('ol.TileUrlFunction');
|
||||
goog.require('ol.tilegrid');
|
||||
goog.require('ol.tilegrid.TileGrid');
|
||||
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ goog.require('ol.layer.Image');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.source.ImageStatic');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.rendering.layer.Image', function() {
|
||||
|
||||
@@ -6,6 +6,7 @@ goog.require('ol.format.MVT');
|
||||
goog.require('ol.layer.VectorTile');
|
||||
goog.require('ol.obj');
|
||||
goog.require('ol.source.VectorTile');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.rendering.layer.VectorTile', function() {
|
||||
|
||||
@@ -5,6 +5,7 @@ goog.require('ol.proj');
|
||||
goog.require('ol.proj.EPSG3857');
|
||||
goog.require('ol.reproj.Image');
|
||||
goog.require('ol.source.ImageStatic');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.rendering.reproj.Image', function() {
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
goog.provide('ol.test.rendering.reproj.Tile');
|
||||
|
||||
goog.require('ol.TileState');
|
||||
goog.require('ol.events');
|
||||
goog.require('ol.proj');
|
||||
goog.require('ol.reproj.Tile');
|
||||
goog.require('ol.source.XYZ');
|
||||
goog.require('ol.TileState');
|
||||
goog.require('ol.tilegrid');
|
||||
|
||||
|
||||
describe('ol.rendering.reproj.Tile', function() {
|
||||
|
||||
Reference in New Issue
Block a user