vue-amap TypeError: v.w.uh is not a constructor
公司的后台系统需要对用户进行接单位置标点。我就想到了vue-amap,经过不断尝试终于把这玩意的坑走了一遍,上干货。
1:如何进行大量数据渲染,我们都知道浏览器一瞬间加载大量数据是会卡死的,这样对用户非常不友好,后来发现网上有很好的方案:分批加载。先把数据按拆分,利用setInterval分批加载数据,不一次性呈现数据,这样浏览器会依次加载数据,不至于卡死。
2:TypeError: v.w.uh is not a constructor,这个错误是因为界面加载地图还没加载完成造成的,我搜到的解决方案有很多:在这里我提出两个解决方案:
1:当我们在main.js引入并初始化vue-amap的时候,不要对当前界面路由进行懒加载,
const operationLog = () => import('../views/operation-log/operation-log')
如果懒加载就会报错TypeError: v.w.uh is not a constructor
如果是直接import 路由文件就不会报错
import xxx from '../views/xxx/xxx.vue'
2:如果必须懒加载,
在main.js:不执行初始化
mport VueAMap from 'vue-amap'
Vue.use(VueAMap);
在vue界面:引入vue-amap 在当前vue文件的created中初始化,就不会报错。
import VueAMap from 'vue-amap'
created() {
VueAMap.initAMapApiLoader({
key: "your key",
plugin: [
"AMap.Autocomplete",
"AMap.PlaceSearch",
"AMap.Scale",
"AMap.OverView",
"AMap.ToolBar",
"AMap.MapType",
"AMap.PolyEditor",
"AMap.CircleEditor"
],
// 默认高德 sdk 版本为 1.4.4
v: "1.4.4",
uiVersion: "1.0.11" // 版本号
});
},
4:发现和CDN引入的高德地图冲突了怎么办?
解决方法:
在main.js:i
mport VueAMap from 'vue-amap'
Vue.use(VueAMap);
在vue界面:引入vue-amap 在created进行初始化,就不会报错。
import VueAMap from 'vue-amap'
created() {
VueAMap.initAMapApiLoader({
key: "your key",
plugin: [
"AMap.Autocomplete",
"AMap.PlaceSearch",
"AMap.Scale",
"AMap.OverView",
"AMap.ToolBar",
"AMap.MapType",
"AMap.PolyEditor",
"AMap.CircleEditor"
],
// 默认高德 sdk 版本为 1.4.4
v: "1.4.4",
uiVersion: "1.0.11" // 版本号
});
this.getCityList(); //获取城市
// await this.loadCarTypeList(); //获取车型
},