nuxt.js 下使用 antv-l7 实在是有太多的坑了,官方文档也不是很全,只能不断摸索和尝试,下面我把这些坑记录下来,也许能帮到你。
这些解决方案不会是唯一解,也不见得是最优解,但至少解决了我的问题,而且还保留了代码的相对整洁和高效。如果你有更好的解决方案,欢迎留言;如果未来官方修复了这些问题,或者提供了更好的使用方法,那请忽略这篇文章。
nuxt 下只能通过 plugin 的方式引入 l7
不能直接用 import { Scene } from '@antv/l7'
这样的方法,在任何地方都不行,会出现 window undefined 的错误
比较隐蔽的情况是,访问 localhost:3000/
等页面是正常的,然后通过点击菜单(即利用 Nuxt to
来完成跳转),那及时使用了 import
也一切正常,但,这种时候,这个页面是不能被刷新的,也不能直接访问,否则一样会出现 window undefined 的错误
解决方案就是和其他的 client only 组件一样,通过 plugin 的方式引入
在 plugins
目录下新建 l7.js
import Vue from 'vue'
const l7 = require('@antv/l7')
const l7maps = require('@antv/l7-maps'