高德地图JS API升级到2.0版本

2023-10-31

项目上反馈高德地图底图信息更新不及时,不利于进行点位规划。经研究发现高德地图JS API 1.4.15版本相对于2.0版本,确实地图切片上的标注信息较少。通过工单的形式询问高德的技术工程师认识到1.4.15版本数据更新有延迟,1.4.15版本地图的数据以季度为周期更新,2.0版本的按月更新。

于是将产品中的高德地图从1.4.15版本升级到2.0版本,但是在地图版本升级时碰到了一系列的问题,将碰到的问题以及问题的解决措施记录下来,方面后期的维护工作。(使用的前端框架是Vue)

1.地图实例

# 1.实例挂载 -- 影响地图页面加载性能
1. 地图相关实例包括: map、AMap、地图插件、地图覆盖物等
2. 地图相关的实例不要挂载在vue的data中,因为响应式变量会导致地图卡顿。可以挂在window上,推荐在created生命周期中直接使用 this. 的方式定义,这样是非响应式变量
3. 一些没有在DOM上使用的变量也推荐在created生命周期中定义

created() {
  this.districtExplorer = null;
  this.geolocation = null;
  this.mouseTool = null;
  this.ruler = null;
  this.autoComplete = null;
  this.massMarksV1 = null;
},

# 2.字段变更
1. 获取到的地图可视区经纬度范围中参数字段变更
   1. southwest --> southWest
   2. northeast --> northEast
2. 所有单个点位的经纬度数据中经纬度字段变更
   1. R --> KL
   2. Q --> kT

2.地图图层

# 1.defaultLayer与setDefaultLayer用法废弃
可以改为使用 layers和 setLayers

# 2.矢量图层
生成矢量图层用法变更:new AMap.TileLayer() --> AMap.createDefaultLayer()

3.地图插件

# 1.插件名变更
1. Autocomplete --> AutoComplete
2. PolyEditor插件拆分为 PolygonEditor插件和 PolylineEditor插件
3. 多边形编辑插件 --> PolygonEditor
4. 折线的编辑插件 --> PolylineEditor

# 2.插件挂载
不能直接挂载在data中,可以选择挂载在created生命周期中

# 3.插件加载
1. 插件加载不能全部使用老版本的异步加载插件方式,要看插件的使用场景,可以同步加载插件与异步加载插件相结合
2. 需要在地图加载完成后立即使用的插件使用同步加载,否则建议使用异步加载

4.覆盖物

# 1.覆盖物事件穿透
1. v.De.bubble = true --> v._opts.bubble = true
2. 在地图上绘制覆盖物时,建议覆盖物都是不可进行事件穿透的: bubble: false。当需要进行覆盖物事件穿透时,如打开测距功能,起点打在一个矩形区域上,此矩形需要开启事件穿透才可打起点。改bubble的值为true即可

// 地图上所有的覆盖物开启事件穿透
window.map.getAllOverlays().forEach((v) => {
   v._opts.bubble = true;
});

# 2.覆盖物透明度
1. 没有找到可使用的api,所以自己搞了个简单的方法,此方法有变更
2. x.De.contentDom.style.opacity = 0.5 --> x._style.opacity = 0.5

# 3.清空地图contextMenu
1. 没有找到可使用的api,搞了个直接粗暴的方法
2. window.contextMenu.De.items = []; --> window.contextMenu.Zy = [];

# 4.地图的infoWindow打开
1. 2.0版在打开地图的自定义内容的infoWindow时,不知道为什么,有时候如果跟在业务代码后面写成同步代码,就会打不开infoWindow,于是打不开时可以放在setTimeout中。

// xxxx 业务代码
setTimeout(() => {
   this.infoWindow = new window.AMap.InfoWindow({
          isCustom: true,
          content: this.$refs.movePointWindow.$el,
          anchor: 'top-center',
          offset: new window.AMap.Pixel(0, 0),
        });
   this.infoWindow.open(window.map, [xx.KL, xx.kT]);
});

# 5.自定义点位内容
1. 在自定义点位内容时,点位的父容器class名发生变更,所以在修改css样式时需注意
2. amap-marker-content -> amap-marker

# 6.点位的lable值跳动
1. 在点位放大缩小时,点位的label位置会跳动,解决方法是先让点位的label值隐藏,再显示出来,这样就不会出现label位置跳动的现象。通过改变opacity来显示隐藏

if (this.isShowPointName) { this.updatePointLabel(v, 'pos-name-hidden')}
setTimeout(() => {if (this.isShowPointName) { this.updatePointLabel(v)}})

updatePointLabel(v, name = '') {
  this.pointObj[v.id].setLabel({
    content: `<div class="pos-name ${name}">${`${v.positionCode}_${v.positionName}`}</div>`,
    direction: 'bottom',
  });
},
    
.pos-name {
  padding: 5px;
  color: #fff;
  font-size: 12px;
  text-shadow: -1px 1px 0 #000, 1px 1px 0 #000, 1px -1px 0 #000, -1px -1px 0 #000;
  opacity: 1;
  &-hidden {
    opacity: 0;
  }
}

5.海量点图层

# 1.显示的图层范围
1. 由于地图层级有小数级的存在,在写显示的层级范围时,如在17级以下展示海量点图层,老版本写到16就行了,2.0版本最好写到16.99
2. zooms: [3, 16] --> [3,16.99]

# 2.海量点数据量限制
1. 2.0版本的海量点图层,有已知的性能问题,不建议在2.0版本上使用海量点图层
2. 如果非要使用海量点图层,建议点位数量不要超过1万的数据量,否则会出现拖动地图卡顿的现象

海量点图层卡顿问题,通过工单询问高德技术工程师,得到的回答:

在这里插入图片描述

所以在2.0版本中不建议使用海量点图层。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高德地图JS API升级到2.0版本 的相关文章

随机推荐

  • Web前端复习——Javascript(1)

    1 js发展进程关键词 ECMAScript标准 定义了js语言的核心语法 Netscape 遵照标准 实现了Javascript语言 Microsoft 遵照标准 实现了JSscript标准 W3C DOM标准 专门操作网页内容的标准 所
  • 算法基础--递归与回溯、递推、迭代关系

    递归的优缺点 优点 代码更简洁清晰 可读性更好 实际上递归的代码更清晰 但是从学习的角度要理解递归真正发生的什么 是如何调用的 调用层次和路线 调用堆栈中保存了什么 可能是不容易 但是不可否认递归的代码更简洁 缺点 由于递归需要系统堆栈 所
  • 微信小程序期末作业-优购商城

    优购商城微信小程序 2021下半年微信小程序期末作业 下载链接在文末 首页有轮播图 点我下载资源 https download csdn net download weixin 43474701 57893310
  • Visual Studio中如何进行多线程调试

    多线程的应用通常使得我们的程序调试变得困难和复杂 但是也是有章法可言的 在设计和开发多线程的程序时 需要考虑的就是多线程之间的资源共享和相互协作 资源共享和协作通常使用互斥量和信号量机制进行解决 我们在调试多线程程序时 不能把程序运行过程仅
  • 报错处理:org.xml.sax.SAXParseException: 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标

    在vue项目中配置user xml文件后 重新启动后台报错 org xml sax SAXParseException 不允许有匹配 xX mM lL 的处理指令目标 后面查阅后发现 xml文件是从别处粘贴过来的 没有顶格写 这样 达咩 这
  • Nginx相关配置

    启动Nginx 到nginx sbin目录下 nginx 1 反向代理的配置一 打开浏览器 在浏览器的地址栏输入 www 123 com 跳转到Linux系统tomcat上 我们访问一个网址的时候 浏览器会先查询本地有没有缓存这个网址对应的
  • 计算机牛人找工作-----可以参考(9个offer,12家公司,35场面试,从微软到谷歌2012)

    http www kuqin com job 20130111 333954 html 1 简介 毕业答辩搞定 总算可以闲一段时间 把这段求职经历写出来 也作为之前三个半月的求职的回顾 首先说说我拿到的offer情况 微软 3面 gt 终面
  • SDN介绍

    随着通信技术的不断发展 SDN已经逐渐成为整个行业注目的焦点 很多人认为SDN技术必将对传统网络带来一次划时代的变革 那么 什么是SDN 我们有应该如何理解和学习SDN 我们为什么需要SDN SDN的实现方式有哪些 SDN的未来发展方向是什
  • Mac安装Redis

    要在Mac上安装Redis 你可以按照以下步骤进行操作 打开终端应用程序 Terminal 可以在 应用程序 文件夹的 实用工具 目录下找到它 或者command 空格 输入ter然后直接回车 确保你已经安装了Homebrew 如果没有 请
  • 解决kibana启动时:3005 - wrong protocol being used to connect to the wazuh api 和 Wazuh API seems to be dow

    解决elasticsearch缺少模板问题 https mp csdn net editor html 112570396 后 依然不能正常检测到 wazuh api 状态 默认ip和端口 现在 解决kibana启动时 3005 wrong
  • Git教程---Windows安装及命令使用(详细例子)

    目录 一 Git的工作原理 二 Git下载及安装 三 Git配置 四 Git命令 示例 参考链接 一 Git的工作原理 Git有四个工作区域 其中三个工作区域工作在本地 一个工作区域工作在远程仓库 本地目录 工作区 平时存放项目代码的位置
  • 使用 Grid 进行常见布局

    grid 布局是W3C提出的一个二维布局系统 通过 display grid 来设置使用 对于以前一些复杂的布局能够得到更简单的解决 本篇文章通过几个布局来对对 grid 布局进行一个简单的了解 目前 grid 仅仅只有 Edge使用前缀能
  • 【windows系统】通过SSH Key访问服务器

    BG 废话不多说 直接上干货 1 终端输入命令 ssh username server 确认是否有自己的用户名 2 查看是否生成过SSH Key ls ssh 未生成过 提示 No such file or directory 生成过 提示
  • 旅游推荐平台

    作者主页 编程千纸鹤 作者简介 Java 前端 Python开发多年 做过高程 项目经理 架构师 主要内容 Java项目开发 毕业设计开发 面试技术整理 最新技术分享 收藏点赞不迷路 关注作者有好处 文末获得源码 项目编号 BS XX 05
  • Flask从入门到做出一个博客的大型教程(三)

    Flask从入门到做出一个博客的大型教程 三 在开始之前 先来看下项目的整体结构 flask app forms py init py routes py templates base html index html login html
  • 导入别人的安卓项目方法-需要修改的配置(Androidstudio)通用解决办法

    导入别人的安卓项目方法 一般导入别人的安卓项目后会遇到一些问题 下面是通用方法 绝大多数情况都能运行出来 步骤一 导入别人的项目报错 步骤二 Androidstudio新建一个空项目 步骤三 找到两个build gradle文件 这两个就是
  • 2021年江苏省职业院校技能大赛中职 网络信息安全赛项试卷--攻击日志解析

    2021年江苏省职业院校技能大赛中职 网络信息安全赛项 attack pacapng攻击日志分析 2021年江苏省攻击日志分析任务书 2021年江苏省攻击日志分析任务书解析 如果有不懂得地方可以私信博主 欢迎交流 交流群 603813289
  • java <? extends T>和<? super T>介绍(一)

  • python安装&配置环境(win10)

    python安装 配置环境 win10 1 打开python官网下载python安装包 操作步骤如下所示 点击 gt python官网链接 1 1 进入官网 1 2 进入下载页面 1 3 选择指定版本的python 本文选择python3
  • 高德地图JS API升级到2.0版本

    项目上反馈高德地图底图信息更新不及时 不利于进行点位规划 经研究发现高德地图JS API 1 4 15版本相对于2 0版本 确实地图切片上的标注信息较少 通过工单的形式询问高德的技术工程师认识到1 4 15版本数据更新有延迟 1 4 15版