33 lines
736 B
JavaScript
33 lines
736 B
JavaScript
export class MapSync {
|
|
constructor(primary, secondary) {
|
|
this.primary = primary;
|
|
this.secondary = secondary;
|
|
this._syncing = false;
|
|
this._onMove = () => {
|
|
if (this._syncing) return;
|
|
this._syncing = true;
|
|
this.secondary.jumpTo({
|
|
center: this.primary.getCenter(),
|
|
zoom: this.primary.getZoom(),
|
|
bearing: this.primary.getBearing(),
|
|
pitch: this.primary.getPitch(),
|
|
});
|
|
this._syncing = false;
|
|
};
|
|
this._enabled = false;
|
|
}
|
|
|
|
enable() {
|
|
if (this._enabled) return;
|
|
this._enabled = true;
|
|
this.primary.on('move', this._onMove);
|
|
this._onMove();
|
|
}
|
|
|
|
disable() {
|
|
this._enabled = false;
|
|
this.primary.off('move', this._onMove);
|
|
}
|
|
}
|
|
|