Skip to content

线路图层(PathLayer)

示例

公交线路可视化Demo Baidu数据,有偏

示例源码
tsx
import React, { useEffect, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import { MbMap, MbTiandituLayer } from '@mapbox-react/core'
import { MbPathLayer } 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/json/beijing-bus-lines.json'
  const [width, setWidth] = useState(100)

  const getPath = (data: any[]) => {
    let prevPt: number[] = []
    const points: number[][] = []
    for (let i = 0; i < data.length; i += 2) {
      let pt = [data[i], data[i + 1]]
      if (i > 0) {
        pt = [prevPt[0] + pt[0], prevPt[1] + pt[1]]
      }
      prevPt = pt

      points.push([pt[0] / 1e4, pt[1] / 1e4])
    }
    return points
  }

  return (
    <div className="map-wrapper">
      <MbMap ref={mapInst} center={mapCenter} zoom={zoom} pitch={pitch}>
        <MbPathLayer data={data} getPath={getPath} getWidth={width} />
      </MbMap>
    </div>
  )
}

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

API

PROPS

名称描述类型默认值
id图层Idstring-
autoHighlight本属性为true且pickable为true时,则会将鼠标悬浮选中的对象设为高亮booleanfalse
data图层源数据string / IndexAny / AnyArr / Promise<any>''
getColor颜色信息string / AnyFunc / number[]black
getPath路径信息AnyFuncobject => object.path
getWidth宽度信息number / AnyNumberFunc100
highlightColor要与高亮对象原始颜色进行混合(blend)的颜色值string / number[][255, 255, 128, 1]
highlightedObjectIndex高亮元素序号number-1
miterLimitrounded为false时生效number4
capRounded-booleanfalse
jointRounded-booleanfalse
opacity透明度number1
pickable图层是否会响应鼠标事件,若为false,则组件不会emit鼠标相关事件booleanfalse
show是否显示booleantrue
widthMaxPixels-numberNumber.MAX_SAFE_INTEGER
widthMinPixels-number0
widthCcale-number1
widthUnits-string(pixels / meters)meters

EVENTS

名称描述参数
onCreated初始化完成事件-
onMouseMove-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }
onMouseLeave--
onClick-{ object: any; coordinates: mapboxgl.LngLat; pixel: [number, number] }

METHODS

名称描述定义