Skip to content

Commit 7b59109

Browse files
committed
avoid jumps on zoom
1 parent d4d0d6c commit 7b59109

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

src/traces/scattermapbox/plot.js

+17-16
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ proto.update = function update(calcTrace) {
9090
var hadCluster = !!this.clusterEnabled;
9191
var lThis = this;
9292

93-
function addCluster() {
94-
lThis.addSource('circle', optsAll.circle, trace.cluster);
93+
function addCluster(noSource) {
94+
if(!noSource) lThis.addSource('circle', optsAll.circle, trace.cluster);
9595
var order = ORDER.cluster;
9696
for(var i = 0; i < order.length; i++) {
9797
var k = order[i];
@@ -100,40 +100,40 @@ proto.update = function update(calcTrace) {
100100
}
101101
}
102102

103-
function removeCluster() {
103+
function removeCluster(noSource) {
104104
var order = ORDER.cluster;
105105
for(var i = order.length - 1; i >= 0; i--) {
106106
var k = order[i];
107107
map.removeLayer(lThis.layerIds[k]);
108108
}
109-
map.removeSource(lThis.sourceIds.circle);
109+
if(!noSource) map.removeSource(lThis.sourceIds.circle);
110110
}
111111

112-
function addNonCluster() {
112+
function addNonCluster(noSource) {
113113
var order = ORDER.nonCluster;
114114
for(var i = 0; i < order.length; i++) {
115115
var k = order[i];
116116
var opts = optsAll[k];
117-
lThis.addSource(k, opts);
117+
if(!noSource) lThis.addSource(k, opts);
118118
lThis.addLayer(k, opts, below);
119119
}
120120
}
121121

122-
function removeNonCluster() {
122+
function removeNonCluster(noSource) {
123123
var order = ORDER.nonCluster;
124124
for(var i = order.length - 1; i >= 0; i--) {
125125
var k = order[i];
126126
map.removeLayer(lThis.layerIds[k]);
127-
map.removeSource(lThis.sourceIds[k]);
127+
if(!noSource) map.removeSource(lThis.sourceIds[k]);
128128
}
129129
}
130130

131-
function remove() {
132-
if(hadCluster) removeCluster(); else removeNonCluster();
131+
function remove(noSource) {
132+
if(hadCluster) removeCluster(noSource); else removeNonCluster(noSource);
133133
}
134134

135-
function add() {
136-
if(hasCluster) addCluster(); else addNonCluster();
135+
function add(noSource) {
136+
if(hasCluster) addCluster(noSource); else addNonCluster(noSource);
137137
}
138138

139139
function repaint() {
@@ -157,10 +157,11 @@ proto.update = function update(calcTrace) {
157157
var wasHidden = this.isHidden;
158158
var isHidden = trace.visible !== true;
159159

160-
if(
161-
this.below !== below ||
162-
hadCluster !== hasCluster
163-
) {
160+
if(this.below !== below) {
161+
remove(true);
162+
add(true);
163+
repaint();
164+
} else if(hadCluster !== hasCluster) {
164165
remove();
165166
add();
166167
} else if(isHidden && !wasHidden) {

0 commit comments

Comments
 (0)