@@ -8,11 +8,12 @@ var ORDER = {
88 nonCluster : [ 'fill' , 'line' , 'circle' , 'symbol' ] ,
99} ;
1010
11- function ScatterMapbox ( subplot , uid , clusterEnabled ) {
11+ function ScatterMapbox ( subplot , uid , clusterEnabled , isHidden ) {
1212 this . type = 'scattermapbox' ;
1313 this . subplot = subplot ;
1414 this . uid = uid ;
1515 this . clusterEnabled = clusterEnabled ;
16+ this . isHidden = isHidden ;
1617
1718 this . sourceIds = {
1819 fill : 'source-' + uid + '-fill' ,
@@ -127,11 +128,12 @@ proto.update = function update(calcTrace) {
127128 }
128129 }
129130
130- function reset ( ) {
131+ function repaint ( ) {
131132 var order = hasCluster ? ORDER . cluster : ORDER . nonCluster ;
132133 for ( var i = 0 ; i < order . length ; i ++ ) {
133134 var k = order [ i ] ;
134135 var opts = optsAll [ k ] ;
136+ if ( ! opts ) continue ;
135137
136138 subplot . setOptions ( lThis . layerIds [ k ] , 'setLayoutProperty' , opts . layout ) ;
137139
@@ -144,14 +146,22 @@ proto.update = function update(calcTrace) {
144146 }
145147 }
146148
147- if ( hadCluster !== hasCluster ) {
149+ var wasHidden = this . isHidden ;
150+ var isHidden = trace . visible !== true ;
151+
152+ if ( isHidden && ! wasHidden ) {
153+ if ( hadCluster ) removeCluster ( ) ; else removeNonCluster ( ) ;
154+ } else if ( ! isHidden && wasHidden ) {
155+ if ( hasCluster ) addCluster ( ) ; else addNonCluster ( ) ;
156+ } else if ( hadCluster !== hasCluster ) {
148157 if ( hadCluster ) removeCluster ( ) ; else removeNonCluster ( ) ;
149158 if ( hasCluster ) addCluster ( ) ; else addNonCluster ( ) ;
150159 } else {
151- reset ( ) ;
160+ repaint ( ) ;
152161 }
153162
154163 this . clusterEnabled = hasCluster ;
164+ this . isHidden = isHidden ;
155165 this . below = below ;
156166
157167 // link ref for quick update during selections
@@ -171,10 +181,13 @@ proto.dispose = function dispose() {
171181module . exports = function createScatterMapbox ( subplot , calcTrace ) {
172182 var trace = calcTrace [ 0 ] . trace ;
173183 var hasCluster = trace . cluster && trace . cluster . enabled ;
184+ var isHidden = trace . visible !== true ;
185+
174186 var scatterMapbox = new ScatterMapbox (
175187 subplot ,
176188 trace . uid ,
177- hasCluster
189+ hasCluster ,
190+ isHidden
178191 ) ;
179192
180193 var optsAll = convert ( subplot . gd , calcTrace ) ;
0 commit comments