import * as React from "react"; import { InteractiveMap, CanvasOverlay, SVGOverlay, HTMLOverlay, FullscreenControl, GeolocateControl, CanvasRedrawOptions, HTMLRedrawOptions, SVGRedrawOptions, StaticMap, ViewportProps } from 'react-map-gl'; import * as MapboxGL from "mapbox-gl"; interface State { viewport: ViewportProps; } class MyMap extends React.Component<{}, State> { readonly state: State = { viewport: { width: 400, height: 400, bearing: 0, latitude: 0, longitude: 0, zoom: 3, pitch: 0, altitude: 1.5, maxZoom: 20, minZoom: 0, maxPitch: 60, minPitch: 0, }, }; private map: MapboxGL.Map; render() { return (
this.setState({ viewport })} onViewStateChange={({ viewState }) => this.setState({ viewport: viewState })} > { const { ctx, height, project, unproject, width, } = opts; const xy: number[] = unproject(project([20, 20])); ctx.clearRect(0, 0, width, height); }} /> {}} captureScroll={true} captureDrag={true} captureClick={true} captureDoubleClick={true} /> {}} /> { const { height, project, unproject, width, } = opts; const xy: number[] = unproject(project([20, 20])); }} captureScroll={true} captureDrag={true} captureClick={true} captureDoubleClick={true} /> {}} /> { const { height, project, unproject, width, } = opts; const xy: number[] = unproject(project([20, 20])); }} style={{ border: "2px solid black" }} captureScroll={true} captureDrag={true} captureClick={true} captureDoubleClick={true} />
); } private readonly setRefInteractive = (el: InteractiveMap) => { this.map = el.getMap(); } private readonly setRefStatic = (el: StaticMap) => { this.map = el.getMap(); } }