@@ -19,9 +19,30 @@ describe('canvasPixelmapLayer', function () {
1919 *
2020 * @param {object } layerParams Optional layer parameters.
2121 */
22- function createPixelmap ( layerParams ) {
23- var params = geo . util . pixelCoordinateParams ( '#map' , 4096 , 4096 , 2048 , 2048 ) ;
22+ function createPixelmap ( layerParams , limitedArea ) {
23+ var params = geo . util . pixelCoordinateParams (
24+ '#map' , limitedArea ? 32768 : 4096 , limitedArea ? 32768 : 4096 ,
25+ 2048 , 2048 ) ;
2426 params . layer . url = '/data/pixelmap_{z}_{x}_{y}.png' ;
27+ params . layer . keepLower = false ;
28+ if ( limitedArea ) {
29+ params . layer . minLevel = 3 ;
30+ params . layer . url = ( x , y , z ) => `../../data/pixelmap_${ z - 3 } _${ y } _${ x } .png` ;
31+ params . layer . tilesMaxBounds = ( level ) => {
32+ var scale = Math . pow ( 2 , params . layer . maxLevel - level ) ;
33+ return {
34+ x : Math . floor ( 4096 / scale ) ,
35+ y : Math . floor ( 4096 / scale )
36+ } ;
37+ } ;
38+ params . layer . tilesAtZoom = ( level ) => {
39+ var scale = Math . pow ( 2 , params . layer . maxLevel - level ) ;
40+ return {
41+ x : Math . ceil ( 2 / scale ) ,
42+ y : Math . ceil ( 2 / scale )
43+ } ;
44+ } ;
45+ }
2546 params . layer . data = new Array ( 5112 ) . fill ( 0 ) ;
2647 params . layer . style = {
2748 color : ( d , i ) => {
@@ -41,6 +62,10 @@ describe('canvasPixelmapLayer', function () {
4162 }
4263 params . layer . renderer = 'canvas' ;
4364 map = geo . map ( params . map ) ;
65+ if ( limitedArea ) {
66+ map . zoom ( 2 ) ;
67+ map . center ( { x : 30000 , y : 30000 } ) ;
68+ }
4469 layer = map . createLayer ( 'pixelmap' , params . layer ) ;
4570 map . draw ( ) ;
4671 }
@@ -117,4 +142,16 @@ describe('canvasPixelmapLayer', function () {
117142 done ( ) ;
118143 } ) ;
119144 } ) ;
145+ it ( 'limitedArea' , function ( done ) {
146+ createPixelmap ( undefined , true ) ;
147+ map . onIdle ( ( ) => {
148+ map . center ( { x : 0 , y : 0 } ) ;
149+ map . onIdle ( ( ) => {
150+ expect ( layer instanceof geo . pixelmapLayer ) . toBe ( true ) ;
151+ expect ( layer . features ( ) . length ) . toBe ( 2 ) ;
152+ map . center ( { x : 30000 , y : 0 } ) ;
153+ map . onIdle ( done ) ;
154+ } ) ;
155+ } ) ;
156+ } ) ;
120157} ) ;
0 commit comments