import React, {PureComponent} from 'react'; const camelPattern = /(^|[A-Z])[a-z]*/g; const defaultContainer = ({children}) =>
{children}
; export default class ControlPanel extends PureComponent { _formatSettingName(name) { return name.match(camelPattern).join(' '); } _renderCheckbox(name, value) { return (
this.props.onChange(name, evt.target.checked)} />
); } _renderNumericInput(name, value) { return (
this.props.onChange(name, Number(evt.target.value))} />
); } _renderSetting(name, value) { switch (typeof value) { case 'boolean': return this._renderCheckbox(name, value); case 'number': return this._renderNumericInput(name, value); default: return null; } } _renderInteractionStates({isDragging, isPanning, isRotating, isZooming, inTransition}) { return (
{isDragging && 'Yes'}
{inTransition && 'Yes'}
{isPanning && 'Yes'}
{isRotating && 'Yes'}
{isZooming && 'Yes'}
); } render() { const Container = this.props.containerComponent || defaultContainer; const {settings, interactionState} = this.props; return (

Limit Map Interaction

Turn interactive features off/on.

View Code ↗

{Object.keys(settings).map(name => this._renderSetting(name, settings[name]))}
{this._renderInteractionStates(interactionState)}
); } }