Skip to content

BufferLineLayer

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, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import { MbBufferLineLayer, MbMap, MbTiandituLayer } from '@mapbox-react/core'

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

  const [lineString] = 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']} />
        <MbBufferLineLayer
          lineString={lineString}
          radius={2}
          borderOpacity={0.5}
          resizerColor="blue"
          backgroundOpacity={0.1}
          closable={true}
          countable={true}
          draggable={true}
          resizable={true}
        />
      </MbMap>
    </div>
  )
}

ReactDOM.render(<App />, document.querySelector('#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, lineString 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 { MbBufferLineLayer, 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']} />
        <MbBufferLineLayer
          lineString={[]}
          radius={2}
          manual={true}
          borderOpacity={0.5}
          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-
lineStringcoordinates arrayArray<number[]>[]
manualManually select points on the map. When set to true, lineString data is invalidbooleanfalse
radiusBuffer radius, in kilometersnumber10
borderColorBorder colorstringblue
borderOpacityBorder opacitynumber0.5
borderWidthBorder widthnumber5
backgroundColorBackground colorstringblue
backgroundOpacityBackground opacitynumber0.1
resizerColorResizer icon colorstringblack
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
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:{lineString, polygon}
onCompleteIn manual mode, an event is triggered when the buffer is completedParameters:{lineString, polygon}
onCloseTriggered when the close operation is clickedMapMouseEvent
onMouseEnterTriggered when the mouse enters the buffer-
onMouseLeaveTriggered when the mouse leaves the buffer-

METHODS

NameDescriptionDefinition