帧动画图片加载器(ImageFrameLoader)
ImageFrameLoader 提供预加载帧动画图标
示例
示例源码
tsx
import React, { useEffect, useRef, useState } from 'react'
import ReactDOM from 'react-dom'
import {
MbImageFrameLoader,
MbMap,
MbSymbolLayer,
MbTiandituLayer,
} from '@mapbox-react/core'
const App = () => {
const [mapCenter] = useState([115.124368, 29.216049])
const [zoom, setZoom] = useState(11)
const symbolDataSource = [
{
coordinates: [115.124368, 29.216049],
properties: {
icon: 'vIcon',
},
},
{
coordinates: [115.124368, 29.246049],
properties: {
icon: 'vIcon',
},
},
{
coordinates: [115.124368, 29.186049],
properties: {
icon: 'hIcon',
},
},
{
coordinates: [115.324368, 29.216049],
properties: {
icon: 'hIcon',
},
},
]
const images = [
{
name: 'hIcon',
dir: 'h' as const,
steps: 7,
duration: 150,
url: 'https://mapbox-web.github.io/mapbox-react/images/h-steps.jpeg',
},
{
name: 'vIcon',
dir: 'v' as const,
steps: 3,
duration: 300,
url: 'https://mapbox-web.github.io/mapbox-react/images/v-steps.png',
},
]
return (
<div className="map-wrapper">
<MbMap center={mapCenter} zoom={zoom}>
<MbImageFrameLoader images={images} />
<MbTiandituLayer types={['vec']} />
<MbSymbolLayer
data={symbolDataSource}
iconImageField="icon"
iconSize={0.3}
iconAllowOverlap
textAllowOverlap
/>
</MbMap>
</div>
)
}
ReactDOM.render(<App />, document.querySelector('#root'))
API
PROPS
名称 | 描述 | 类型 | 默认值 |
---|---|---|---|
images | 图片属性数组 数组中每个对象需包含必需的name属性以及图片相关信息 | array<{ name: string; url: string; steps: number; dir?: string; duration?: number; requestInit?: RequestInit }> | - |
- 组件使用fetch去请求图片数据,如果是跨域请求,请在服务端配置CORS头部,requestInit为fetch的第二个参数
- dir为截取方向,横向图片值为'h',竖向图片值为'v', 默认'v'
- steps为帧步骤数
- duration为每帧持续事件,单位毫秒,默认300
EVENTS
名称 | 描述 | 参数 |
---|---|---|
onCreated | 地图初始化完成事件 | - |
METHODS
名称 | 描述 | 定义 |
---|