16
16
exports [ "TileCacheUrlFunction" ] = factory ( require ( "openlayers" ) ) ;
17
17
else
18
18
root [ "ol" ] = root [ "ol" ] || { } , root [ "ol" ] [ "TileCacheUrlFunction" ] = factory ( root [ "ol" ] ) ;
19
- } ) ( this , function ( __WEBPACK_EXTERNAL_MODULE_3__ ) {
19
+ } ) ( this , function ( __WEBPACK_EXTERNAL_MODULE_4__ ) {
20
20
return /******/ ( function ( modules ) { // webpackBootstrap
21
21
/******/ // The module cache
22
22
/******/ var installedModules = { } ;
@@ -69,7 +69,7 @@ return /******/ (function(modules) { // webpackBootstrap
69
69
value : true
70
70
} ) ;
71
71
72
- var _tileUrlFunction = __webpack_require__ ( 1 ) ;
72
+ var _tileUrlFunction = __webpack_require__ ( 2 ) ;
73
73
74
74
var tileUrlFunction = _interopRequireWildcard ( _tileUrlFunction ) ;
75
75
@@ -89,6 +89,87 @@ return /******/ (function(modules) { // webpackBootstrap
89
89
90
90
/***/ } ,
91
91
/* 1 */
92
+ /***/ function ( module , exports ) {
93
+
94
+ "use strict" ;
95
+
96
+ Object . defineProperty ( exports , "__esModule" , {
97
+ value : true
98
+ } ) ;
99
+
100
+ var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
101
+
102
+ exports . calculateTileRangeForZ = calculateTileRangeForZ ;
103
+ exports . getTileCoordForXYAndResolution = getTileCoordForXYAndResolution ;
104
+ exports . getTileRangeHeight = getTileRangeHeight ;
105
+ /**
106
+ * @param {ol.tilegrid.TileGrid } tileGrid
107
+ * @param {ol.Extent } extent
108
+ * @param {number } z
109
+ * @return {{minX, minY, maxX, maxY} }
110
+ */
111
+ function calculateTileRangeForZ ( tileGrid , extent , z ) {
112
+ var resolution = tileGrid . getResolution ( z ) ;
113
+
114
+ var _getTileCoordForXYAnd = getTileCoordForXYAndResolution ( tileGrid , extent [ 0 ] , extent [ 1 ] , resolution , false ) ,
115
+ _getTileCoordForXYAnd2 = _slicedToArray ( _getTileCoordForXYAnd , 2 ) ,
116
+ minX = _getTileCoordForXYAnd2 [ 0 ] ,
117
+ minY = _getTileCoordForXYAnd2 [ 1 ] ;
118
+
119
+ var _getTileCoordForXYAnd3 = getTileCoordForXYAndResolution ( tileGrid , extent [ 2 ] , extent [ 3 ] , resolution , true ) ,
120
+ _getTileCoordForXYAnd4 = _slicedToArray ( _getTileCoordForXYAnd3 , 2 ) ,
121
+ maxX = _getTileCoordForXYAnd4 [ 0 ] ,
122
+ maxY = _getTileCoordForXYAnd4 [ 1 ] ;
123
+
124
+ return { minX : minX , minY : minY , maxX : maxX , maxY : maxY } ;
125
+ }
126
+
127
+ /**
128
+ * @param {ol.tilegrid.TileGrid } tileGrid
129
+ * @param {number } x
130
+ * @param {number } y
131
+ * @param {number } resolution
132
+ * @param {boolean } reverseIntersectionPolicy
133
+ * @return {number[] }
134
+ */
135
+ function getTileCoordForXYAndResolution ( tileGrid , x , y , resolution , reverseIntersectionPolicy ) {
136
+ var z = tileGrid . getZForResolution ( resolution ) ;
137
+ var scale = resolution / tileGrid . getResolution ( z ) ;
138
+ var origin = tileGrid . getOrigin ( z ) ;
139
+ var tileSize = tileGrid . getTileSize ( z ) ;
140
+
141
+ if ( ! Array . isArray ( tileSize ) ) {
142
+ tileSize = [ tileSize , tileSize ] ;
143
+ }
144
+
145
+ var adjustX = reverseIntersectionPolicy ? 0.5 : 0 ;
146
+ var adjustY = reverseIntersectionPolicy ? 0 : 0.5 ;
147
+ var xFromOrigin = Math . floor ( ( x - origin [ 0 ] ) / resolution + adjustX ) ;
148
+ var yFromOrigin = Math . floor ( ( y - origin [ 1 ] ) / resolution + adjustY ) ;
149
+ var tileCoordX = scale * xFromOrigin / tileSize [ 0 ] ;
150
+ var tileCoordY = scale * yFromOrigin / tileSize [ 1 ] ;
151
+
152
+ if ( reverseIntersectionPolicy ) {
153
+ tileCoordX = Math . ceil ( tileCoordX ) - 1 ;
154
+ tileCoordY = Math . ceil ( tileCoordY ) - 1 ;
155
+ } else {
156
+ tileCoordX = Math . floor ( tileCoordX ) ;
157
+ tileCoordY = Math . floor ( tileCoordY ) ;
158
+ }
159
+
160
+ return [ tileCoordX , tileCoordY ] ;
161
+ }
162
+
163
+ /**
164
+ * @param {{minX, minY, maxX, maxY} } tileRange
165
+ * @return {number }
166
+ */
167
+ function getTileRangeHeight ( tileRange ) {
168
+ return tileRange . maxY - tileRange . minY + 1 ;
169
+ }
170
+
171
+ /***/ } ,
172
+ /* 2 */
92
173
/***/ function ( module , exports , __webpack_require__ ) {
93
174
94
175
'use strict' ;
@@ -100,31 +181,38 @@ return /******/ (function(modules) { // webpackBootstrap
100
181
exports . createTileUrlFunctionFromTemplate = createTileUrlFunctionFromTemplate ;
101
182
exports . createTileUrlFunctionFromTemplates = createTileUrlFunctionFromTemplates ;
102
183
103
- var _openlayers = __webpack_require__ ( 3 ) ;
184
+ var _openlayers = __webpack_require__ ( 4 ) ;
104
185
105
186
var _openlayers2 = _interopRequireDefault ( _openlayers ) ;
106
187
107
- var _util = __webpack_require__ ( 2 ) ;
188
+ var _util = __webpack_require__ ( 3 ) ;
189
+
190
+ var _tileRange = __webpack_require__ ( 1 ) ;
108
191
109
192
function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
110
193
111
194
var zRegEx = / \{ z \} / g;
195
+
112
196
var zPadRegEx = / \{ 0 z \} / g;
113
197
var xRegEx = / \{ x \d ? \} / g;
114
198
var yRegEx = / \{ y \d ? \} / g;
115
199
var dashYRegEx = / \{ - y \d ? \} / g;
116
200
201
+ var EPSG3857_EXTENT = [ - 20037508.342789244 , - 20037508.342789244 , 20037508.342789244 , 20037508.342789244 ] ;
202
+
117
203
/**
118
204
* Basic create factory.
119
205
*
120
206
* @param {string } url Url template
121
207
* @param {ol.tilegrid.TileGrid } [tileGrid] Tile grid.
208
+ * @param {ol.Extent | number[] } [extent] Tile grid extent.
122
209
* @returns {ol.TileUrlFunctionType }
123
210
* @static
124
211
* @public
125
212
*/
126
213
function createTileUrlFunction ( url ) {
127
214
var tileGrid = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _openlayers2 . default . tilegrid . createXYZ ( ) ;
215
+ var extent = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : EPSG3857_EXTENT ;
128
216
129
217
return createTileUrlFunctionFromTemplates ( expandUrl ( url ) , tileGrid ) ;
130
218
}
@@ -134,13 +222,15 @@ return /******/ (function(modules) { // webpackBootstrap
134
222
*
135
223
* @param {string } template Source url
136
224
* @param {ol.tilegrid.TileGrid } [tileGrid] Tile grid.
225
+ * @param {ol.Extent | number[] } [extent] Tile grid extent.
137
226
* @returns {ol.TileUrlFunctionType }
138
227
* @private
139
228
*/
140
229
function createTileUrlFunctionFromTemplate ( template ) {
141
230
var tileGrid = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _openlayers2 . default . tilegrid . createXYZ ( ) ;
231
+ var extent = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : EPSG3857_EXTENT ;
142
232
143
- return (
233
+ return (
144
234
/**
145
235
* @param {ol.TileCoord } tileCoord Tile Coordinate.
146
236
* @return {string | undefined } Tile URL.
@@ -153,11 +243,9 @@ return /******/ (function(modules) { // webpackBootstrap
153
243
return coordReplacer ( y ) ( part ) ;
154
244
} ) . replace ( dashYRegEx , function ( part ) {
155
245
var z = tileCoord [ 0 ] ;
156
- var range = tileGrid . getFullTileRange ( z ) ;
157
246
// The {-y} placeholder requires a tile grid with extent
158
- ( 0 , _util . assert ) ( range , 'Tile grid with defined extent' ) ;
159
-
160
- var y = range . getHeight ( ) + tileCoord [ 2 ] ;
247
+ var range = ( 0 , _tileRange . calculateTileRangeForZ ) ( tileGrid , extent , z ) ;
248
+ var y = ( 0 , _tileRange . getTileRangeHeight ) ( range ) + tileCoord [ 2 ] ;
161
249
162
250
return coordReplacer ( y ) ( part ) ;
163
251
} ) ;
@@ -171,11 +259,13 @@ return /******/ (function(modules) { // webpackBootstrap
171
259
*
172
260
* @param {string[] } templates Url templates
173
261
* @param {ol.tilegrid.TileGrid } [tileGrid] Tile grid.
262
+ * @param {ol.Extent | number[] } [extent] Tile grid extent.
174
263
* @returns {ol.TileUrlFunctionType }
175
264
* @private
176
265
*/
177
266
function createTileUrlFunctionFromTemplates ( templates ) {
178
267
var tileGrid = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : _openlayers2 . default . tilegrid . createXYZ ( ) ;
268
+ var extent = arguments . length > 2 && arguments [ 2 ] !== undefined ? arguments [ 2 ] : EPSG3857_EXTENT ;
179
269
180
270
return createTileUrlFunctionFromTileUrlFunctions ( templates . map ( function ( tileUrlFunction ) {
181
271
return createTileUrlFunctionFromTemplate ( tileUrlFunction , tileGrid ) ;
@@ -244,7 +334,7 @@ return /******/ (function(modules) { // webpackBootstrap
244
334
return tileUrlFunctions [ 0 ] ;
245
335
}
246
336
247
- return (
337
+ return (
248
338
/**
249
339
* @param {ol.TileCoord } tileCoord Tile Coordinate.
250
340
* @param {number } pixelRatio Pixel ratio.
@@ -263,7 +353,7 @@ return /******/ (function(modules) { // webpackBootstrap
263
353
}
264
354
265
355
/***/ } ,
266
- /* 2 */
356
+ /* 3 */
267
357
/***/ function ( module , exports ) {
268
358
269
359
"use strict" ;
@@ -321,10 +411,10 @@ return /******/ (function(modules) { // webpackBootstrap
321
411
}
322
412
323
413
/***/ } ,
324
- /* 3 */
414
+ /* 4 */
325
415
/***/ function ( module , exports ) {
326
416
327
- module . exports = __WEBPACK_EXTERNAL_MODULE_3__ ;
417
+ module . exports = __WEBPACK_EXTERNAL_MODULE_4__ ;
328
418
329
419
/***/ }
330
420
/******/ ] )
0 commit comments