Skip to content

自定义资源 ​

组件默认创建 Assets 并加载包内的纹理和全国 GeoJSON。大多数场景无需关心资源管理。

手动创建资源 ​

在多个地图之间共享加载时机,或希望自行展示资源进度时,可以关闭自动加载:

vue
<script setup>
import { shallowRef } from 'vue'
import { Assets } from 'b-map3d'

const assets = shallowRef(new Assets())

assets.value.instance.on('onProgress', (path, loaded, total) => {
  console.log(path, loaded, total)
})
</script>

<template>
  <BMap3D :assets="assets" :auto-load="false" :data="mapData" />
</template>

传入的对象需要包含 instance,并提供以下能力:

  • getResource(name):按组件约定名称返回加载结果。
  • on(event, handler):监听 onProgress、onLoad 和 onError。
  • loadAll(items):加载资源清单。
  • destroy():解绑事件并释放持有的数据。

内置资源名称 ​

名称用途
china全国底图 GeoJSON
pathLine / pathLine2 / pathLine3飞线与流光纹理
rotationBorder1 / rotationBorder2旋转边界
chinaBlurLine全国底图模糊边缘
guangquan1 / guangquan2柱图底部光圈
huiguang柱图辉光
ocean底部海洋背景
mapFlyline地图飞线
point信息点
focusArrows / focusBar / focusBg / focusMidQuan / focusMoveBg中心聚焦动画

替换资源时应保持名称和数据类型一致。纹理返回 Three.js Texture,china 返回 JSON 文本并由场景解析。

WARNING

组件销毁时,自动创建的 Assets 会一并销毁;外部传入的共享资源不会由组件主动销毁,资源所有者应在合适时机调用 assets.instance.destroy()。

BMap3D · Vue 3 spatial component