Skip to content

Commit a73fa27

Browse files
committed
[feat] custom zoom offset for raster tile layer
Signed-off-by: Ihor Dykhta <dikhta.igor@gmail.com>
1 parent 2005927 commit a73fa27

3 files changed

Lines changed: 19 additions & 5 deletions

File tree

src/components/src/side-panel/layer-panel/raster-tile-layer-configurator.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,12 +355,13 @@ function RasterTileLayerConfiguratorFactory(
355355
</>
356356
);
357357

358-
// For PMTiles in raster format, only show opacity and terrain options for now
358+
// For PMTiles in raster format, only show opacity, zoom offset and terrain options for now
359359
if (stac.pmtilesType === PMTilesType.RASTER) {
360360
return (
361361
<StyledLayerConfigurator>
362362
<LayerConfigGroup {...visConfiguratorProps} label="Visual Settings" collapsible={false}>
363363
<VisConfigSlider {...layer.visConfigSettings.opacity} {...visConfiguratorProps} />
364+
<VisConfigSlider {...layer.visConfigSettings.zoomOffset} {...visConfiguratorProps} />
364365
</LayerConfigGroup>
365366
{elevationUI}
366367
</StyledLayerConfigurator>
@@ -487,6 +488,7 @@ function RasterTileLayerConfiguratorFactory(
487488

488489
<LayerConfigGroup {...visConfiguratorProps} label="Visual Settings" collapsible={false}>
489490
<VisConfigSlider {...layer.visConfigSettings.opacity} {...visConfiguratorProps} />
491+
<VisConfigSlider {...layer.visConfigSettings.zoomOffset} {...visConfiguratorProps} />
490492
{colormapAllowed && (
491493
<SidePanelSection>
492494
<PanelLabel>Colormap</PanelLabel>

src/layers/src/raster-tile/config.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,16 @@ export const rasterVisConfigs = {
727727
step: 0.05,
728728
type: 'number'
729729
} as VisConfigNumber,
730+
zoomOffset: {
731+
defaultValue: 0,
732+
// group: "tiles"
733+
isRanged: false,
734+
label: 'Zoom Offset',
735+
property: 'zoomOffset',
736+
range: [-2, 2],
737+
step: 1,
738+
type: 'number'
739+
} as VisConfigNumber,
730740
_stacQuery: {
731741
defaultValue: null,
732742
type: 'input'

src/layers/src/raster-tile/raster-tile-layer.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -493,10 +493,11 @@ export default class RasterTileLayer extends KeplerLayer {
493493
};
494494

495495
const tileLayer = new TileLayer<any, RenderSubLayersProps>({
496-
id,
496+
id, // : id + '_' + visConfig.zoomOffset,
497497
minZoom,
498498
maxZoom,
499499
tileSize: 512 / devicePixelRatio,
500+
zoomOffset: visConfig.zoomOffset,
500501
getTileData: (args: any) => this.getTileData({...args, ...getTileDataCustomProps}),
501502
onViewportLoad: this.onViewportLoad.bind(this),
502503
// @ts-expect-error - TS doesn't know we'll pass appropriate props here
@@ -507,6 +508,7 @@ export default class RasterTileLayer extends KeplerLayer {
507508
updateTriggers: {
508509
getTileData: [
509510
shouldLoadTerrain,
511+
// visConfig.zoomOffset,
510512
// Colormap has changed
511513
colormapId,
512514
// assets to be loaded has changed
@@ -570,7 +572,7 @@ export default class RasterTileLayer extends KeplerLayer {
570572

571573
return [
572574
new TileLayer<any, RasterTileLayerVisConfigCommonSettings>({
573-
id,
575+
id, // : id + '_' + visConfig.zoomOffset,
574576
getTileData: (args: any) =>
575577
this.getTileDataPMTiles({...args, shouldLoadTerrain, metadata}, tileSource),
576578

@@ -585,7 +587,7 @@ export default class RasterTileLayer extends KeplerLayer {
585587
minZoom,
586588
maxZoom,
587589
tileSize: 512 / devicePixelRatio,
588-
zoomOffset: devicePixelRatio === 1 ? -1 : 0,
590+
zoomOffset: devicePixelRatio === 1 ? -1 : 0, // + (visConfig.zoomOffset as unknown as number),
589591
// @ts-expect-error - TS doesn't know we'll pass appropriate props here
590592
renderSubLayers: renderSubLayersPMTiles,
591593

@@ -596,7 +598,7 @@ export default class RasterTileLayer extends KeplerLayer {
596598
opacity,
597599

598600
updateTriggers: {
599-
getTileData: [shouldLoadTerrain]
601+
getTileData: [shouldLoadTerrain /*, visConfig.zoomOffset*/]
600602
},
601603
// Props for 3D mode
602604
...(shouldLoadTerrain

0 commit comments

Comments
 (0)