Skip to content

Commit 207bfe4

Browse files
committed
mapbox: fire plotly_relayout only when 'movend' is triggered by mouse
- 'moveend' (and 'movestart', 'move') gets triggered by map.setCenter, map.setZoom, map.setBearing and map.setPitch. - make sure that 'plotly_relayout' is triggered here only when the 'moveend' originates from a mouse target.
1 parent 24a5ac8 commit 207bfe4

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/plots/mapbox/mapbox.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,27 @@ proto.createMap = function(calcData, fullLayout, resolve, reject) {
125125
});
126126

127127
// keep track of pan / zoom in user layout and emit relayout event
128-
map.on('moveend', function() {
128+
map.on('moveend', function(eventData) {
129129
var view = self.getView();
130130

131131
opts._input.center = opts.center = view.center;
132132
opts._input.zoom = opts.zoom = view.zoom;
133133
opts._input.bearing = opts.bearing = view.bearing;
134134
opts._input.pitch = opts.pitch = view.pitch;
135135

136-
var update = {};
137-
update[self.id] = Lib.extendFlat({}, view);
138-
gd.emit('plotly_relayout', update);
136+
// 'moveend' gets triggered by map.setCenter, map.setZoom,
137+
// map.setBearing and map.setPitch.
138+
//
139+
// Here, we make sure that 'plotly_relayout' is
140+
// triggered here only when the 'moveend' originates from a
141+
// mouse target (filtering out API calls) to not
142+
// duplicate 'plotly_relayout' events.
143+
144+
if(eventData.originalEvent) {
145+
var update = {};
146+
update[self.id] = Lib.extendFlat({}, view);
147+
gd.emit('plotly_relayout', update);
148+
}
139149
});
140150

141151
map.on('mousemove', function(evt) {

0 commit comments

Comments
 (0)