1.这几个函数在.vue中文件可以正常使用,在.ts文件中使用报错
2.原因是:需要vue中map.ts与vue中可以交互
想这样用是没办法交互的
交互的意思是:
就是vue 可以调用ts 中的方法, ts可以通过eventTarget.fire()抛出事件 vue通过eventTarget.on()监听到
#### `map.ts`和`index.vue`各自代码业务分离的原则
- 涉及地图业务的操作均写在 map.ts 中
- 涉及 UI 层面、和地图无关的操作均写在 index.vue 中,vue 中尽量不使用 mars3d 和 Cesium 开头的类
#### index.vue 与 map.ts 交互
1. index.vue 直接调用 map.ts 中 导出的函数或对象
2. index.vue 调用 map.ts 中的函数拿到返回值,继续后续处理,异步操作返回值可以是 Promise
3. map.ts 主动触发 ui 变化,通过 mars3d.BaseClass 事件中心处理。如
```ts
// map.ts
export const eventTarget = new mars3d.BaseClass()
function change() {
mapWork.eventTarget.fire("change", { value: "hello change" })
}
// index.vue
import * as mapWork from "./map"
const change = (e: any) => {
console.log(e)
}
mapWork.eventTarget.on("change", change)
onUnmounted(() => {
mapWork.eventTarget.off("change", change) // 注意:请及时销毁事件绑定
})
```
参考开发教程:Mars3D三维可视化平台 | 火星科技