Skip to content

BufferSectorLayer

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

Example

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

const App = () => {
  const [mapCenter] = useState([116.17381, 39.92155464])
  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']} />
        <MbBufferSectorLayer
          center={mapCenter}
          radius={8}
          startAngle={315}
          borderColor="blue"
          borderOpacity={0.5}
          backgroundColor="blue"
          centerColor="red"
          resizerColor="blue"
          backgroundOpacity={0.1}
          closable={true}
          countable={true}
          draggable={true}
          resizable={true}
          rotatable={true}
        />
      </MbMap>
    </div>
  );
}

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

API

PROPS

NameDescriptionTypeDefault
idLayer IDstring-
centerBuffer center pointnumber[]-
radiusBuffer radius, in kilometersnumber10
startAngleStart angle, with 0 degrees at North from the center, rotating clockwise. Between 0 and 360number0
endAngleEnd angle, with 0 degrees at North from the center, rotating clockwise. Between 0 and 360number90
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
rotatableWhether the buffer is rotatablebooleanfalse
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:{center,radius,startAngle,endAngle}
onCloseTriggered when the close operation is clickedMapMouseEvent
onMouseEnterTriggered when the mouse enters the buffer-
onMouseLeaveTriggered when the mouse leaves the buffer-

METHODS

NameDescriptionDefinition