Skip to content

LineLayer

Example

Bus route visualization demo with 94,000 line segments.

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

const App = () => {
  const [mapCenter] = useState([116.314177, 39.832819])
  const [zoom, setZoom] = useState(8)
  const [pitch, setPitch] = useState(20)
  const mapInst = useRef<any>()

  const data = 'https://mapbox-web.github.io/mapbox-react/geojson/beijing_bus.json'
  const [width, setWidth] = useState(3)

  const getColor = (d: { from: number[] }) => {
    const r = (d.from[1] - 39.5) * 0.5 + (d.from[0] - 116) * 0.5
    return `rgba(${255 * (1 - r * 2)}, ${128 * r}, ${255 * r},${Math.abs(80 * r) + 60
      })`
  }

  return (
    <div className="map-wrapper">
      <MbMap ref={mapInst} center={mapCenter} zoom={zoom} pitch={pitch}>
        <MbLineLayer
          data={data}
          color={getColor}
          width={width}
          sourcePosition={(d) => d.from}
          targetPosition={(d) => d.to}
        />
      </MbMap>
    </div>
  )
}

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

API

PROPS

NameDescriptionTypeDefault
idLayer ID. A unique identifier for the layer.string-
sourcePositionSource position. This defines the starting point of the connection/line. Can be an array of coordinates or a function that returns the coordinates based on the data.AnyArr / AnyFunc-
targetPositionTarget position. This defines the ending point of the connection/line. Can be an array of coordinates or a function that returns the coordinates based on the data.AnyArr / AnyFunc-
autoHighlightWhen this property is true and pickable is also true, the object under the mouse cursor will be highlighted. This provides visual feedback when hovering over interactive elements.booleanfalse
colorColor of the connection/line. This can be a string representing a color name (e.g., 'red', 'blue'), a function that returns a color based on the data, or an array of RGBA values (e.g., [255, 0, 0, 255] for red).string / AnyFunc'black'
dataSource data for the layer. This can be a string representing a URL, an object, an array, or a Promise that resolves to data.string / IndexAny / AnyArr / Promise<any>''
highlightColorThe color to blend with the original color of the highlighted object. This is used to create the highlight effect. The value can be a string representing a color or an array of RGBA values.string / number[][255, 255, 128, 1]
highlightedObjectIndexThe index of the currently highlighted element within the data. A value of -1 indicates that no object is currently highlighted.number-1
opacityThe opacity of the connection/line (0-1). 0 is fully transparent, and 1 is fully opaque.number1
pickableWhether the layer responds to mouse events. If false, the component will not emit mouse-related events (e.g., click, hover).booleanfalse
showWhether the layer is visible. If true, the layer will be rendered; otherwise, it will be hidden.booleantrue
widthWidth of the connection/line. This can be a fixed number or a function that returns a width based on the data.number / AnyNumberFunc1
widthMaxPixelsThe maximum width in pixels. This limits the maximum width of the rendered connections/lines.numberNumber.MAX_SAFE_INTEGER
widthMinPixelsThe minimum width in pixels. This ensures that connections/lines are not rendered with a width smaller than this value.number0
widthScaleA scaling factor applied to the width. This allows you to easily adjust the width of all connections/lines in the layer.number1
widthUnitsUnits for the width: 'pixels' or 'meters'. Specifies whether the width values are interpreted as pixels on screen or meters in world space. This is especially relevant for geographic visualizations where the width should represent a physical distance.string ('pixels', 'meters')'meters'

EVENTS

NameDescriptionParameters
onCreatedInitialization complete event-
onMouseMove-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }
onMouseLeave--
onClick-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }

METHODS

NameDescriptionDefinition