docs/api-reference/widgets/zoom-widget.md
import {ZoomWidgetDemo} from '@site/src/doc-demos/widgets'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
<ZoomWidgetDemo />This widget controls the zoom level of a deck.gl view. Click '+' to zoom in or '-' to zoom out by the configured zoomStep. Supports controlling Map and Globe views.
import {ZoomWidget} from '@deck.gl/widgets';
import {Deck} from '@deck.gl/core';
import '@deck.gl/widgets/stylesheet.css';
new Deck({
initialViewState: {
longitude: 0,
latitude: 52,
zoom: 4
},
controller: true,
widgets: [
new ZoomWidget({placement: 'top-left'})
]
});
import {ZoomWidget} from '@deck.gl/widgets';
import {Deck} from '@deck.gl/core';
import '@deck.gl/widgets/stylesheet.css';
new Deck({
initialViewState: {
longitude: 0,
latitude: 52,
zoom: 4
},
controller: true,
widgets: [
new ZoomWidget({placement: 'top-left'})
]
});
import React from 'react';
import {DeckGL, ZoomWidget} from '@deck.gl/react';
import '@deck.gl/widgets/stylesheet.css';
function App() {
return (
<DeckGL
initialViewState={{
longitude: 0,
latitude: 52,
zoom: 4
}}
controller
>
<ZoomWidget placement="top-left" />
</DeckGL>
);
}
import React, {useState, useCallback} from 'react';
import {DeckGL, ZoomWidget} from '@deck.gl/react';
import type {MapViewState} from '@deck.gl/core';
import '@deck.gl/widgets/stylesheet.css';
function App() {
const [viewState, setViewState] = useState<MapViewState>({
longitude: 0,
latitude: 52,
zoom: 4
});
const onViewStateChange = useCallback(({viewState: vs}) => {
setViewState(vs as MapViewState);
}, []);
return (
<DeckGL viewState={viewState} onViewStateChange={onViewStateChange} controller>
<ZoomWidget placement="top-left" />
</DeckGL>
);
}
import {ZoomWidget, type ZoomWidgetProps} from '@deck.gl/widgets';
new ZoomWidget({} satisfies ZoomWidgetProps);
ZoomWidgetProps {#zoomwidgetprops}The ZoomWidget accepts the generic WidgetProps and:
orientation (string, optional) {#orientation}'vertical'Widget button orientation. Valid options are vertical or horizontal.
zoomAxis (string, optional)'all'Which axes to apply zoom to. One of 'X', 'Y' or 'all'. Only effective if the current view is an OrthographicView.
zoomStep (number, optional) {#zoomstep}1Zoom level delta applied by each button click.
zoomInLabel (string, optional) {#zoominlabel}'Zoom In'Tooltip message displayed while hovering a mouse over the zoom in button.
zoomInTooltip (string | HTMLElement | false, optional) {#zoomintooltip}zoomInLabelCustom tooltip content for the zoom in button. Overrides the default label text in the tooltip. Pass false to disable.
zoomOutLabel (string, optional) {#zoomoutlabel}'Zoom Out'Tooltip message displayed while hovering a mouse over the zoom out button.
zoomOutTooltip (string | HTMLElement | false, optional) {#zoomouttooltip}zoomOutLabelCustom tooltip content for the zoom out button. Overrides the default label text in the tooltip. Pass false to disable.
transitionDuration (number, optional) {#transitionduration}200Zoom transition duration in milliseconds.
onZoom (Function, optional) {#onzoom}(params: {viewId: string; delta: number; zoom: number}) => void
() => {}Callback when zoom buttons are clicked. Called for each viewport that will be zoomed.
viewId: The view being zoomeddelta: Zoom direction (+1 for zoom in, -1 for zoom out)zoom: The new zoom levelzoomX: The new zoom level on X axis, if used with an OrthographicView.zoomY: The new zoom level on Y axis, if used with an OrthographicView.Learn more about how to replace icons in the styling guide.
| Name | Type | Default |
|---|---|---|
--icon-zoom-in | SVG Data Url | Material Symbol Add |
--icon-zoom-out | SVG Data Url | Material Symbol Remove |