Skip to content

Map3DWorld API ​

Map3DWorld 是组件内部的场景控制器。大多数业务应优先使用组件 ref;只有需要直接访问 Three.js 场景、相机或渲染器时才使用本 API。

直接创建 ​

js
import { Assets, Map3DWorld } from 'b-map3d'

const assets = new Assets()

assets.instance.on('onLoad', () => {
  const world = new Map3DWorld(canvas, assets, {
    mapJson,
    geoProjectionCenter: [108.887114, 35.263661],
    geoProjectionScale: 85,
  })

  world.time.resume()
})

直接创建时,调用者负责等待资源加载、管理 canvas,并在结束时执行 world.destroy() 和 assets.instance.destroy()。

常用属性 ​

属性类型说明
sceneTHREE.SceneThree.js 场景。
camera.instanceTHREE.Camera当前透视相机。
camera.controlsOrbitControls相机控制器。
renderer.instanceTHREE.WebGLRendererWebGL 渲染器。
timeTimerequestAnimationFrame 时间管理。
animateTlgsap.core.Timeline初始入场时间线。

数据方法 ​

js
world.updateData(partialData, { reveal: true })
world.updateBarData(nextProvinces, { reveal: true })
world.updateInfoPointData(nextPoints, { reveal: true })

reveal: false 会跳过柱图和标签的重新入场动画,适合连续更新或需要自行编排动画的场景。

显隐方法 ​

js
world.setBarsVisible(true)
world.setInfoPointVisible(true)
world.setFlyLineVisible(true)
world.setDiffuseVisible(true)
world.setRotateBorderVisible(true)

相机控制 ​

js
world.setCameraControls({
  enablePan: false,
  minDistance: 20,
  maxDistance: 70,
  dampingFactor: 0.08,
})

传入的键必须存在于 OrbitControls 实例上;未知字段会被忽略。

销毁 ​

js
world.destroy()

销毁会停止 RAF、移除窗口尺寸监听、释放 OrbitControls、WebGLRenderer、几何体和材质,并清理 CSS3D 标签节点。方法可安全重复调用。

BMap3D · Vue 3 spatial component