龙空技术网

js引用天地图遇到的问题 天地图/echarts 加载异常处理

剧情 58

前言:

此刻各位老铁们对“安装mapinfo出现的问题”大概比较重视,朋友们都需要学习一些“安装mapinfo出现的问题”的相关内容。那么小编同时在网络上搜集了一些关于“安装mapinfo出现的问题””的相关文章,希望同学们能喜欢,我们快快来了解一下吧!

#前端##JavaScript WEB前端开发##程序员经验分享##api接口##程序员那些事##程序员#

一、问题

在引用天地图或者统计图的时候,接口的 响应速度 和 数据量 会影响到 图的加载;

二、图例

1)

2)

三、解决1.缘由

2023.11.21 zyysy系统 天地图加载异常;

2.处理方式

(1)思路:接口数据请求较慢,信息还未获取完天地图就加载出来了,导致 面对象 未渲染,部分地区空白,渲染异常;

解决方式:利用 setTimeout 延迟加载天地图;

结果: 可解决部分时候的加载异常问题,但是不稳定,一旦接口响应超过 设定的延迟时间还是会 加载异常。

getInfo(){    getPhoneCodInfoApi(data).then(res=>{                 //基地信息                if(res.data.chPommBase){                this.baseData=res.data.chPommBase           //基地信息                 this.polygon=res.data.chPommBase.polygon                this.longitude=res.data.chPommBase.longitude                this.latitude=res.data.chPommBase.latitude                 //等接口数据获取到了再去加载地图/统计图               setTimeout(() => {                 //加载地图                  this.getMapOnLoad()                  this.getMapInfo()               }, 2000);     })}

(2)思路:在(1)的基础上,不在依靠 setTimeout,改用 $nextTick ;

解决方式: 在dom更新后加载数据;

结果: 未解决

getInfo(){    getPhoneCodInfoApi(data).then(res=>{                 //基地信息                if(res.data.chPommBase){                this.baseData=res.data.chPommBase           //基地信息                 this.polygon=res.data.chPommBase.polygon                this.longitude=res.data.chPommBase.longitude                this.latitude=res.data.chPommBase.latitude                 //等接口数据获取到了再去加载地图/统计图              this.$nextTick(()=>{                 	//加载地图                  this.getMapOnLoad()                  this.getMapInfo()               });     })}

(3)思路:引用地图/统计图的时候都会给 div 绑定一个 id, 而这个容器正好 是被 <el-collapse-item>组件包裹, 在折叠组件未打开时是无法获得div 的 id 的,导致 地图加载异常。

解决方式: 判断 <el-collapse-item> 的折叠/开启 状态 , 当开启时再调用 地图加载

结果: 成功解决

  <!-- <el-collapse-item> 绑定了 activeName 作为值 , 当打开对应的折叠面板时 再 调用且需要 使用 $nextTick 等到 dom 更新再调用-->watch:{    activeName(val){        if(val=='2'||val==2){          this.$nextTick(()=>{              this.getMapOnLoad()              this.getMapInfo()          })        }    }  },
补充1.利用setTimeout 延迟处理

做延迟加载处理,使用setTimeout

弊端: 可解决部分时候的加载异常问题,但是不稳定,一旦接口响应超过 设定的延迟时间还是会 加载异常

getInfo(){    getPhoneCodInfoApi(data).then(res=>{                 //基地信息                if(res.data.chPommBase){                this.baseData=res.data.chPommBase           //基地信息                 this.polygon=res.data.chPommBase.polygon                this.longitude=res.data.chPommBase.longitude                this.latitude=res.data.chPommBase.latitude                 //等接口数据获取到了再去加载地图/统计图               setTimeout(() => {                 //加载地图                  this.getMapOnLoad()                  this.getMapInfo()               }, 2000);     })}
2.利用 nextTick

等 到 dom 更新后调用

 this.$nextTick(()=>{              this.getMapOnLoad()              this.getMapInfo()          })
3.额外

引用地图/统计图的时候都会给 div 绑定一个 id

如果div 有 v-if 之类的条件 判断 ,且值为 假 则会渲染异常,因为找不到对应id 的div

<!-- 地图容器  --><div id="mapDiv"></div>

标签: #安装mapinfo出现的问题