Skip to content

BufferPolygonLayer

Supports drag-and-drop to change position, drag-and-drop to resize, and real-time area display, among other features.

Example

Example Source Code
tsx
import React, { useEffect, useState, useRef } from 'react'
import ReactDOM from 'react-dom'
import { MbMap, MbBufferPolygonLayer, MbTiandituLayer } from '@mapbox-react/core'

const App = () => {
  const [mapCenter] = useState([116.20381, 39.95155464])
  const [zoom, setZoom] = useState(10)

  const [polygon, setPolygon] = useState([
    [116.17381, 39.92155464],
    [116.25105956968257, 40.02398993628292],
    [116.31591012802686, 39.96769599504311],
    [116.3234327392287, 39.892836286211754],
  ])

  return (
    <div className="map-wrapper">
      <MbMap
        center={mapCenter}
        zoom={zoom}
        glyphs="https://mapbox-web.github.io/mapbox-react/fonts/{fontstack}/{range}.pbf"
        sprite="https://mapbox-web.github.io/mapbox-react/sprites/sprite"
      >
        <MbTiandituLayer types={['vec']} />
        <MbBufferPolygonLayer
          polygon={polygon}
          borderOpacity={0.5}
          centerColor="red"
          resizerColor="blue"
          backgroundOpacity={0.1}
          closable={true}
          countable={true}
          draggable={true}
          resizable={true}
        />
      </MbMap>
    </div>
  );
}

ReactDOM.render(<App />,
  document.getElementById("root"))

Manual Mode Example

  • Click on the map to draw a point
  • Press Esc, Del, or Backspace to delete the previous point
  • Double-click or press Enter to end manual mode
  • In manual mode, polygon data is invalid
  • Dynamically changing the manual parameter value is not supported
Example Source Code
tsx
import React, { useEffect, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import {
  MbBufferPolygonLayer,
  MbMap,
  MbTiandituLayer,
} from '@mapbox-react/core'

const App = () => {
  const [mapCenter] = useState([116.20381, 39.95155464])
  const [zoom, setZoom] = useState(10)

  return (
    <div className="map-wrapper">
      <MbMap
        center={mapCenter}
        zoom={zoom}
        glyphs="https://mapbox-web.github.io/mapbox-react/fonts/{fontstack}/{range}.pbf"
        sprite="https://mapbox-web.github.io/mapbox-react/sprites/sprite"
      >
        <MbTiandituLayer types={['vec']} />
        <MbBufferPolygonLayer
          polygon={[]}
          manual={true}
          borderOpacity={0.5}
          centerColor="red"
          resizerColor="blue"
          backgroundOpacity={0.1}
          closable={true}
          countable={true}
          draggable={true}
          resizable={true}
        />
      </MbMap>
    </div>
  )
}

ReactDOM.render(<App />, document.querySelector('#root'))

API

PROPS

NameDescriptionTypeDefault
idLayer IDstring-
polygonFor the coordinate array, the first point must be identical to the last pointArray<number[]>[]
manualManually select points on the map. When set to true, polygon data is invalidbooleanfalse
borderColorBorder colorstringblue
borderOpacityBorder opacitynumber0.5
borderWidthBorder widthnumber5
backgroundColorBackground colorstringblue
backgroundOpacityBackground opacitynumber0.1
resizerColorResizer icon colorstringblack
centerColorCenter point icon colorstringred
closableWhether to display the close iconbooleanfalse
countableWhether to display the radius value as text. You need to load Mapbox font filesbooleanfalse
resizableWhether to display the resizer iconbooleanfalse
draggableWhether the buffer is draggablebooleanfalse
visibleWhether to display the bufferbooleantrue
resizerRadiusResizer icon circle radiusnumber8
centerRadiusCenter point icon circle radiusnumber8
textFontsFont settings for countable textstring[]['Open Sans Regular']
textColorColor of the countable text.string#000000
textSizeSize of the countable textnumber16
formatterFormatter for the countable textfunction(radius) => string
closeSizeScaling factor for the close iconnumber0.7
closeOffsetOffset of the close iconnumber[][70, 0]
closeIconUrlURL of a custom close iconstring-

EVENTS

NameDescriptionParameters
onUpdateTriggered when the buffer is changedParameters:{polygon}
onCompleteIn manual mode, an event is triggered when the buffer is completedParameters:{polygon}
onCloseTriggered when the close operation is clickedMapMouseEvent
onMouseEnterTriggered when the mouse enters the buffer-
onMouseLeaveTriggered when the mouse leaves the buffer-

METHODS

NameDescriptionDefinition