解决 MapBox addMapStyle 失败,主动刷新地图

应用场景:

底图加载后,边界的图层有时能加载,有时加载不上,在点击或者拖拽移动后可加载成功

最后解决方案:

在子组件中写一个延迟函数,模拟手动点击效果

  created(){
    setTimeout(() => {
      if ( !this.isLoadStyle ) {
        this.handleChange('reset');
      }
    }, 1000);
  },

Debug 过程

失败的报错

成功的报错

由于这边无论是成功还是失败,打印台中都会有很多报错,对比之下也没什么发现。

但是大概判断是加载的问题

第一次尝试 :

生命周期 模拟点击效果

失败原因:地图只能在 父组件  mounted 生命周期中挂载,子组件 点击时 地图还没有挂载上去

第二次尝试 

this.mapboxmap.triggerRepaint() //刷新,未生效

第三次尝试

发现网络请求可以看到这个差异在,判断肯定是后面的东西没有加载好,后面逐步锁定位置在

addMapStyle方法上,原因是 addMapStyle 实行失败了

开始我是想在判断 addMapStyle 执行 成功与否,但这个函数没有回调函数,就在调用他外面的函数套了一层

loadMapStyle() {
  this.mapboxmap.loadMapStyle(process.env.VUE_APP_BASE_MAP_BASEMAP5)
      .then((styleObj) => {
        //加载地图服务
        this.mapboxmap.addMapStyle(styleObj, {
          styleid: "regions",//如果加多层,需要保持唯一性
          isFlyTo: false,
          isBaseMap: false,
        });
      }).catch((err) => {
        console.log('loadMapStyle err:',err);
        if (this.retryCount < this.maxRetryCount) {
          this.retryCount++;
          this.loadMapStyle();
        }
      });
},

但是这个解决部分问题,addMapStyle 方法执行失败是捕捉不到的

第四次尝试,即本次最终解决方法

在父组件中 定义 isLoadStyle 变量,在 addMapStyle方法后赋值为 true

loadMapStyle() {
  this.mapboxmap.loadMapStyle(process.env.VUE_APP_BASE_MAP_BASEMAP5)
      .then((styleObj) => {
        //加载地图服务
        this.mapboxmap.addMapStyle(styleObj, {
          styleid: "regions",//如果加多层,需要保持唯一性//regions
          isFlyTo: false,
          isBaseMap: false,
        });
        this.isLoadStyle = true;
      }).catch((err) => {
        console.log('loadMapStyle err:',err);
        if (this.retryCount < this.maxRetryCount) {
          this.retryCount++;
          this.loadMapStyle();
        }
      });
},

再在子组件中 设置一个延迟函数,判断  isLoadStyle ,如果是 false,则模拟点击效果即可

  created(){
    setTimeout(() => {
      if ( !this.isLoadStyle ) {
        this.handleChange('reset');
      }
    }, 1000);
  },

THE  END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为云obs在java中的使用

1、申请obs服务。 申请完成后&#xff0c;会获得以下几个配置信息&#xff1a; AK"****************************"; SK"******************************************************"; ENDPOINT"obs.*************************"; BUCKET_NAME&q…

go学习之goroutine和channel

文章目录 一、goroutine(协程)1.goroutine入门2.goroutine基本介绍-1.进程和线程说明-2.程序、进程和线程的关系示意图-3.Go协程和Go主线程 3.案例说明4.小结5.MPG模式基本介绍6.设置Golang运行的CPU数7.协程并发&#xff08;并行&#xff09;资源竞争的问题8.全局互斥锁解决资…

LeetCode | 100. 相同的树

LeetCode | 100. 相同的树 OJ链接 判断两个节点是否等于空&#xff0c;两个都等于空就直接返回true如果一个等于空&#xff0c;另一个不等于空&#xff0c;说明false然后再判断两个树的值是否相等最后递归p的左&#xff0c;q的左&#xff0c;p的右&#xff0c;q的右 bool isS…

SQL注入漏洞的检测及防御方法

SQL注入&#xff08;SQL Injection&#xff09;是一种广泛存在于Web应用程序中的严重安全漏洞&#xff0c;它允许攻击者在不得到授权的情况下访问、修改或删除数据库中的数据。这是一种常见的攻击方式&#xff0c;因此数据库开发者、Web开发者和安全专业人员需要了解它&#xf…

【python】保存excel

正确安装了pandas和openpyxl库。 可以通过在命令行中输入以下命令来检查&#xff1a; pip show pandas pip show openpyxl 可以使用pip安装 pip install pandas pip install openpyxl#更新 pip install --upgrade pandas pip install --upgrade openpyxl 保存excel …

HNU-编译原理-讨论课2

讨论课安排&#xff1a;2次4学时&#xff0c;分别完成四大主题讨论 分组&#xff1a;每个班分为8组&#xff0c;每组4~5人&#xff0c;自选组长1人 要求和说明&#xff1a; 以小组为单位上台报告&#xff1b;每次每组汇报2个小主题&#xff0c;每组按要求在2个小主题中各选1…

零信任安全:远程浏览器隔离(RBI)的重要性

引言 在当今数字化时代&#xff0c;网络安全已成为个人和企业关注的焦点。随着网络攻击和恶意软件的不断增加&#xff0c;远程浏览器隔离(RBI)SAAS系统变得至关重要。本文将深入探讨远程浏览器隔离系统的重要性&#xff0c;以及它如何帮助用户保护其网络免受恶意软件和网络攻击…

2022年4月19日 Go生态洞察:Go开发者调查2021结果分析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

FO-like Transformation in QROM Oracle Cloning

参考文献&#xff1a; [RS91] Rackoff C, Simon D R. Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[C]//Annual international cryptology conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 1991: 433-444.[BR93] Bellare M…

Seaborn可视化图形绘制_Python数据分析与可视化

Seaborn可视化图形绘制 频次直方图、KDE和密度图矩阵图分面频次直方图条形图折线图 Seaborn的主要思想是用高级命令为统计数据探索和统计模型拟合创建各种图形&#xff0c;下面将介绍一些Seaborn中的数据集和图形类型。 虽然所有这些图形都可以用Matplotlib命令实现&#xff08…

Mybatis(1)

目录 Mybatis1.快速入门2.Mybatis介绍3.Mybatis工作示意图4.MyBatis 快速入门4.1.1创建monster表4.1.2 创建resources/mybatis-config.xml4.1.3 创建pojo类4.1.4 创建MonsterMapper接口4.1.5 创建MonsterMapper.xml4.1.6 mybatis-config.xml 引入Mapper.xml 文件4.1.6 创建SqIS…

Mysql的页结构详解

1.数据库的存储结构&#xff1a;页 索引结构为我们提供了搞笑的查找方式&#xff0c;索引信息和数据记录都在保存在文件上的&#xff0c;准确地说&#xff0c;是保存在“页”结构中。 1.1磁盘与内存的基本交互单位&#xff1a;页 InnoDB将数据划分为若干个页&#xff0c;Inn…

pycharm中绘制一个3D曲线

import numpy as np import matplotlib.pyplot as plt # 中文的设置 import matplotlib as mp1 from mpl_toolkits.mplot3d import Axes3D mp1.rcParams["font.sans-serif"] ["kaiti"] mp1.rcParams["axes.unicode_minus"] False # 数据创建 X…

超简单的node脚本,将xlsx文件转化为json

开发场景&#xff0c;在一个官网中&#xff0c;官网的设计非常简单&#xff0c;就是一个纯静态的页面&#xff0c;全网站仅一个地方调一下接口&#xff0c;发一下用户填写的信息到运营同学的邮箱&#xff0c;这些数据不会记录在数据库&#xff0c;我需要做一个这样的下拉框。 但…

Clion调试QTQString看不到值问题处理

环境 Clion &#xff1a;2019.3.6 Qt &#xff1a;5.9.6&#xff08;MinGW&#xff09; 环境搭建参考&#xff1a;https://blog.csdn.net/qq_27953479/article/details/132338745 调试时QString看不到值问题处理 下载文件 qt.py : https://github.com/KDE/kdevelop/blob/…

【开源】基于Vue+SpringBoot的康复中心管理系统

项目编号&#xff1a; S 056 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S056&#xff0c;文末获取源码。} 项目编号&#xff1a;S056&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

算法基础三

电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits "…

轻量封装WebGPU渲染系统示例<41>- 前向渲染的雾(Fog)效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/FogTest.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下&#xff1a; export class FogTest {private mRscene new Rend…

Python标准库copy【侯小啾python领航班系列(十五)】

Python标准库copy【侯小啾python领航班系列(十五)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

uniapp小程序分包页面引入wxcomponents(vue.config.js、copy-webpack-plugin)

实例&#xff1a;小程序添加一个源生小程序插件&#xff0c;按照uniapp官方的说明&#xff0c;要放在wxcomponents。后来发现小程序超2m上传不了。 正常的编译情况 会被编译到主包下 思路&#xff1a;把wxcomponents给编译到分包sub_package下 用uniapp的vue.config.js自定义…