SparkLayer
Example
Example Source Code
tsx
import React, { useEffect, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import { MbMap, MbTiandituLayer } from '@mapbox-react/core'
import {
MbGradientBuildingLayer,
MbSparkLayer,
} from '@mapbox-react/effect-layers'
const App = () => {
const [mapCenter] = useState([116.179267984000035, 39.918961127600085])
const [zoom, setZoom] = useState(14.5)
const [pitch, setPitch] = useState(60)
const mapInst = useRef<any>()
const [data, setData] = useState<any[]>([])
const [speed, setSpeed] = useState(5)
const loadData = () => {
const sparkData: any[] = []
for (let i = 0; i < 100; i++) {
sparkData.push({
coordinates: [
116.168 + Math.random() * 0.014,
39.917 + Math.random() * 0.007,
],
properties: {
height: 400 + Math.random() * 500,
color: [255, 100 + Math.random() * 150, 100 + Math.random() * 150],
},
})
}
setData(sparkData)
}
useEffect(() => {
loadData()
}, [])
return (
<div className="map-wrapper">
<MbMap ref={mapInst} center={mapCenter} zoom={zoom} pitch={pitch}>
<MbGradientBuildingLayer
data="https://mapbox-web.github.io/mapbox-react/showcase/building.geojson"
getFillColor={[0, 128, 128]}
dataTransform={(d) => d.features}
getPolygon={(d) => d.geometry.coordinates[0]}
getElevation={(d) => d.properties.Floor * 50}
/>
<MbSparkLayer
data={data}
getPosition={(d) => d.coordinates}
getHeight={(d) => d.properties.height}
getColor={(d) => d.properties.color}
trailLength={100}
speed={speed}
/>
</MbMap>
</div>
)
}
ReactDOM.render(<App />, document.querySelector('#root'))
API
PROPS
Name | Description | Type | Default |
---|---|---|---|
id | Layer ID | string | - |
getPosition | Function to retrieve the position. | AnyFunc | - |
getHeight | Function to retrieve the height. | number / AnyNumberFunc | 1000 |
trailLength | Length of the trail (e.g., in number of segments or time units). | number | 100 |
speed | Speed of movement/animation. | number | 10 |
getColor | Function to retrieve the color. Note: Typo in original table, should be get-color . | string / AnyFunc | 'black' |
data | Source data for the layer. | string / IndexAny / AnyArr / Promise<any> | '' |
show | Whether the layer is visible. | boolean | true |
opacity | The opacity of the layer (0-1). | number | 1 |
pickable | Whether the layer responds to mouse events. If false, the component will not emit mouse-related events. | boolean | false |
autoHighlight | When true and pickable is also true, the hovered object will be highlighted. | boolean | false |
highlightColor | The color to blend with the original color of the highlighted object. | string / number[] | [255, 255, 128, 1] |
highlightedObjectIndex | The index of the currently highlighted element. | number | -1 |
onDataLoad | Callback function invoked after data loading is complete. | AnyFunc | - |
dataTransform | Function to transform the data before rendering. | AnyFunc | - |
transitions | Transition settings for the layer. | IndexAny | {} |
EVENTS
Name | Description | Parameters |
---|
METHODS
Name | Description | Definition |
---|