From 1d5408d7eaf3c1f681da09d6e5d27b0c4af37740 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Tue, 9 Jan 2018 15:52:54 -0800 Subject: [PATCH] Don't place layers hidden by min/maxzoom constraints. Fixes issue #5776. --- src/style/pauseable_placement.js | 5 +- .../mapbox-gl-js#5776/expected.png | Bin 0 -> 3967 bytes .../regressions/mapbox-gl-js#5776/style.json | 85 ++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 test/integration/render-tests/regressions/mapbox-gl-js#5776/expected.png create mode 100644 test/integration/render-tests/regressions/mapbox-gl-js#5776/style.json diff --git a/src/style/pauseable_placement.js b/src/style/pauseable_placement.js index 16393b83fc1..358ac3f8e2c 100644 --- a/src/style/pauseable_placement.js +++ b/src/style/pauseable_placement.js @@ -63,7 +63,10 @@ class PauseablePlacement { while (this._currentPlacementIndex >= 0) { const layerId = order[this._currentPlacementIndex]; const layer = layers[layerId]; - if (layer.type === 'symbol') { + const placementZoom = this.placement.collisionIndex.transform.zoom; + if (layer.type === 'symbol' && + (!layer.minzoom || layer.minzoom <= placementZoom) && + (!layer.maxzoom || layer.maxzoom >= placementZoom)) { if (!this._inProgressLayer) { this._inProgressLayer = new LayerPlacement(); diff --git a/test/integration/render-tests/regressions/mapbox-gl-js#5776/expected.png b/test/integration/render-tests/regressions/mapbox-gl-js#5776/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..618f5497c28b65d1fd983ecf6a93c97f1d34f93e GIT binary patch literal 3967 zcmeH~=UY=r8^(b}jTEU$bEPOjdI<;-gbNAMaivNN(gG0(O`5o%2q+-E8LEPGfu(~| z1OyUFc`YB4kLGSJY_FzaX|jA&?R z!7VKfdZW2Jd&Ko>LL&Ks({k72+AcOam=ti&dR4LC8{WJRwbr zN=p}h_z4-Svp*+5P{GwoV7x{2~`sk6K<)suH#jXc=km6jU&~qbI)fRGCCOdASEn9lH zH0qwayCna~Pc3}oe3W>=X5(_eLV_0gXy%L%)*N&&G&Ca@tN;mpo@pZ1>EC)}W0-Zj^YGVNacSw_@AaliURCyc!zk78Tsnl(D}ii! zn<ERjGk#I#UQu~*@D{rwez1dcX8$F;ZLT{wvpSpKKTcvLkL6VrBm>q*Q*iLO2@ z3_nrj#905so3T5N-+A*#?vjdlSK*di^PE5?qj4UmC zrkjHTm$1$_N4foj17iyd9W+`L@0ggU73bZ-toWDz77|6s)CmlP$K4@u-@o&V(|TO%a_GL~xA_Af&V|Iy&I;7l)~# zNR_rFG%5vb3v6s`$ji&iIQ4Lnwq^znS`O|U9v-^5x)Q-_v%kh|ofmsj-SE!LUMA>j+ep12S!HiL-~4GwGh>eTkg3PRtF1(dzz zYVE?Ith+vkms(X{0E7Zpnc*X>m z21uBjvx|s`;O60(Tfiqd%JERG1I!P9@{^Uyh#@^`Cw!vtTOLhK&6>J8BQvuuz$W;g zhw`1BoeP|toUAeTWMST*)OgXGHwAcO>``D6zm4y}T@IApMMU0%b{WUE&~trR%4sbv zs>r~_%icl>kez@`VZBt=NJJ5E2v|gTxumo_x1=OWh6$_eFLmzRIiNIv7`QnY2^yB- zK3TW3T3W##-Khi?cW`i^?qqfKaq!vEOp-p7T8~JP?00o_srhPPW# zbI*=hdE_@YXMOr~Ta{E9=e0T_T2fky9~f}HYhl6TA$W~a?cpPZHk6J*lpd$Ttagyl@-C|FE4(3b~v1aI^17*;_I8Bn;)=V z*&RTdaK?Jhf4%tl@nh{9>s`0@xu8p<`fVq_(6G(62L^Yp>MyBnkjj z^;hxzgq)lKAT+$A+*=-aBq9_cq%Lvgx|&+f!FBe?Ka7m--p+z1XnPh64ua<0;EhS- zpr=)5-Nu9p%)ZYO07D{ywprA|;$qj0dj^K`7vHAQoq&;9lU%EmxaIdWEm_&g=M#QsipdOvV zVU<%daebyWXJ^L?u-S0@2^n08j`JWeW)8>d0bB(N8ym6W6-|j#pZ$G^F^anr1Ho5d z#M!o&Hq#|+1@0|XqWXC^ThD@TVSZ?vnqE$` z_P)5c)K8oa+R6u8wgt`mU?j@Gz(D>!-qQ8ScMXT{?RD5)z>kcKcoqP3+;Zo2W(a*= zPynS4n(2Eh`?7u}IAb{{B>SQ|>mOEDy)lZ@IFP08)Z;<$ejYztbmzmS0NMKKr{Wok z9#9A!w5F!U^I*!~2UuJ6j4}Wdgl1;Xu(2olFc^t7jefdH(!)9NNtdILW)N;}wg~G1&`b!0T?J zz7i-Oi1EVQ+|U3OLKsNhR~oM_c^&SfSJ&2xi;L}m6_jN^uE1F5X9xW7TN=nLCqE}Z}my*{!y@G-Q;1A*S z1reE`7}3UshEzBrk=ML~g>dlRfq}x7 zmh6yGkP=vxK)Eg9YjGT){Z=a1M6Sj8)HOA!q^G9`DB5uw+1d_F-}Y8o9) LLqz%AN1^`*^uTO1 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/regressions/mapbox-gl-js#5776/style.json b/test/integration/render-tests/regressions/mapbox-gl-js#5776/style.json new file mode 100644 index 00000000000..7670ff58a2b --- /dev/null +++ b/test/integration/render-tests/regressions/mapbox-gl-js#5776/style.json @@ -0,0 +1,85 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 256, + "height": 256 + } + }, + "center": [ + 0, + 0 + ], + "zoom": 0.5, + "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "sources": { + "geojson": { + "type": "geojson", + "data": { + "type": "MultiPoint", + "coordinates": [ + [ + 0, + 0 + ] + ] + } + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "white" + } + }, + { + "id": "bottom", + "type": "symbol", + "source": "geojson", + "layout": { + "text-field": "Bottom Layer", + "text-font": [ + "Open Sans Semibold", + "Arial Unicode MS Bold" + ] + }, + "paint": { + "text-color": "black" + } + }, + { + "id": "middle", + "type": "symbol", + "source": "geojson", + "minzoom": 0.8, + "layout": { + "text-field": "Middle Minzoom Layer", + "text-font": [ + "Open Sans Semibold", + "Arial Unicode MS Bold" + ] + }, + "paint": { + "text-color": "blue" + } + }, + { + "id": "top", + "type": "symbol", + "source": "geojson", + "maxzoom": 0.3, + "layout": { + "text-field": "Top Maxzoom Layer", + "text-font": [ + "Open Sans Semibold", + "Arial Unicode MS Bold" + ] + }, + "paint": { + "text-color": "blue" + } + } + ] +}