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 by 1, click '-' to zoom out by 1. Supports controlling Map and Globe views.
<Tabs groupId="language"> <TabItem value="js" label="JavaScript">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.
zoomInLabel (string, optional) {#zoominlabel}'Zoom In'Tooltip message displayed while hovering a mouse over the zoom in button.
zoomOutLabel (string, optional) {#zoomoutlabel}'Zoom Out'Tooltip message displayed while hovering a mouse over the zoom out button.
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 |