Fix clipping bug

pull/1597/head
Piero Toffanin 2025-02-05 20:57:43 -05:00
rodzic b809b4d396
commit f64cafbd12
1 zmienionych plików z 24 dodań i 5 usunięć

Wyświetl plik

@ -312,11 +312,20 @@ class Map extends React.Component {
layer.isHidden = function(){ layer.isHidden = function(){
if (!this.getContainer()) return false; if (!this.getContainer()) return false;
return this.getContainer().style.display === 'none'; return this.getContainer().style.display === 'none';
} };
layer.setZIndex = function(z){ layer.setZIndex = function(z){
if (this._originalZ === undefined) this._originalZ = this.options.zIndex;
this.options.zIndex = z; this.options.zIndex = z;
this._updateZIndex(); this._updateZIndex();
};
layer.restoreZIndex = function(){
if (this._originalZ !== undefined){
this.setZIndex(this._originalZ);
} }
};
layer.bringToFront = function(){
this.setZIndex(this.options.zIndex + 10000);
};
var popup = L.DomUtil.create('div', 'infoWindow'); var popup = L.DomUtil.create('div', 'infoWindow');
@ -727,23 +736,33 @@ _('Example:'),
} }
handleSideBySideChange = (layer, side) => { handleSideBySideChange = (layer, side) => {
let { rightLayers } = this.state; let { rightLayers, imageryLayers } = this.state;
rightLayers = rightLayers.filter(l => l !== layer); let leftLayers = [];
imageryLayers.forEach(l => l.restoreZIndex());
rightLayers = rightLayers.filter(l => l !== layer);
if (side){ if (side){
rightLayers.push(layer); rightLayers.push(layer);
} }
rightLayers.forEach(l => l.bringToFront());
this.setState({rightLayers}); this.setState({rightLayers});
if (rightLayers.length > 0){ if (rightLayers.length > 0){
if (!this.sideBySideCtrl){ if (!this.sideBySideCtrl){
this.sideBySideCtrl = L.control.sideBySide([], rightLayers).addTo(this.map); this.sideBySideCtrl = L.control.sideBySide(leftLayers, rightLayers).addTo(this.map);
}else{ }else{
this.sideBySideCtrl.setRightLayers(rightLayers); this.sideBySideCtrl.setRightLayers(rightLayers);
this.sideBySideCtrl.setLeftLayers(leftLayers);
} }
}else{ }else{
if (this.sideBySideCtrl){ if (this.sideBySideCtrl){
// Make sure clipping is removed
imageryLayers.forEach(l => {
let container = l.getContainer();
if (container) container.style.clip = '';
});
this.sideBySideCtrl.remove(); this.sideBySideCtrl.remove();
this.sideBySideCtrl = null; this.sideBySideCtrl = null;
} }