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

项目上反馈高德地图底图信息更新不及时,不利于进行点位规划。经研究发现高德地图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版本中不建议使用海量点图层。

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

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

相关文章

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统&#xff1a; 微软的操作系统主要是 Windows 系列&#xff0c;包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统&#xff08;Microsoft System&#xff09;是美国微软开发的Wi…

7.27 Qt

制作简易小闹钟 Timer.pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # dep…

进程_PCB 的理解

目录 一. PCB 的概念 1. 为什么需要PCB 2. PCB的属性 二. task struct 1. task struct 介绍 2. 查看进程指令 3. PID 4. PPID 父进程是什么&#xff1f; 为什么要有父进程&#xff1f; 5. fork 创建子进程 1) fork 后的现象 为什么会打印两次&#xff1f; 2) 的返…

matplotlib从起点出发(6)_Tutorial_6_Animations

1 在matplotlib中使用动画 基于其绘图功能&#xff0c;matplotlib还提供了一个使用动画模块生成动画animation的接口。动画是一系列帧&#xff0c;其中每个帧对应于图形Figure 上的一个绘图。本教程介绍了有关如何创建此类动画的一般准则以及可用的不同选项。 import matplot…

掌握Python的X篇_16_list的切片、len和in操作

接上篇掌握Python的X篇_15_list容器的基本使用&#xff0c;本篇进行进一步的介绍。 文章目录 1. list的索引下标可以是负数2. 切片&#xff08;slice&#xff09;2.1 切片基础知识2.2 如何“取到尽头”2.3 按照步长取元素2.4 逆序取值 3. len函数获取lis的元素个数4. in操作符…

自动驾驶感知系统--惯性导航定位系统

惯性导航定位 惯性是所有质量体本身的基本属性&#xff0c;所以建立在牛顿定律基础上的惯性导航系统&#xff08;Inertial Navigation System,INS&#xff09;(简称惯导系统)不与外界发生任何光电联系&#xff0c;仅靠系统本身就能对车辆进行连续的三维定位和三维定向。卫星导…

【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

目录 一、功能需求 二、开发环境 1、硬件&#xff1a; 2、软件&#xff1a; 3、引脚分配&#xff1a; 三、关键点 1、设计模式之工厂模式 2、wiringPi库下的相关硬件操作函数调用 3、语音模块的串口通信 4、线程 5、摄像头的实时监控和拍照功能 6、人脸识别 四、编…

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物&#xff0c;从在线银行到在线医疗&#xff0c;Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭…

Python基础入门教程(上)

目录 一、你好Python 1.1、Python安装 win版 Linux版 1.2、第一个Python程序 二、Python基本语法 2.1、字面量 2.2、注释 2.3、变量 2.4、数据类型 type()函数 字符串类型的不同定义方式 2.5、数据类型转换 ​编辑 2.6、标识符 2.7、运算符 2.8、字符串扩展 …

Linux安装kafka3.5.1

要在Ubuntu上安装Apache Kafka&#xff0c;请按照以下步骤操作&#xff1a; 1、安装Java运行时环境(Ubuntu)&#xff1a; 如果已经安装jdk不用执行 sudo apt update sudo apt install default-jre2、下载Kafka&#xff1a; wget https://downloads.apache.org/kafka/3.5.1/…

【【51单片机的红外遥控】】

红外遥控&#xff0c;完全把控 红外遥控 利用红外光进行通信的设备&#xff0c;由红外LED将调制后的信号发出&#xff0c;再由专门的红外接收头进行解调输出 通信方式&#xff1a;单工 异步 红外LED波长&#xff1a;940nm 通信协议标准&#xff1a;NEC标准 用那种一体化红红外…

下级平台级联视频汇聚融合平台EasyCVR,层级显示不正确的原因排查

视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…

如何使用 After Effects 导出摄像机跟踪数据到 3ds Max

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 在本教程中&#xff0c;我将展示如何在After Effects中跟踪实景场景&#xff0c;然后将相机数据导出到3ds Max。 1. 项目设置 步骤 1 打开“后效”。 打开后效果 步骤 2 转到合成>新合成以创建新合…

Rust vs Go:常用语法对比(十二)

题图来自 Rust vs Go in 2023[1] 221. Remove all non-digits characters Create string t from string s, keeping only digit characters 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 删除所有非数字字符 package mainimport ( "fmt" "regexp")func main() { s : hei…

运行时数据区

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 类文件被类装载器加载之后&#xff0c;类中的内容&#xff08;比如&#xff1a;变量、常量、方法、对象等&#xff09;这些数据需要存储起来&#xff0c;存储的位置就是在 …

RabbitMQ 教程 | 客户端开发向导

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

JMeter常用内置对象:vars、ctx、prev

在前文 Beanshell Sampler 与 Beanshell 断言 中&#xff0c;初步阐述了JMeter beanshell的使用&#xff0c;接下来归集整理了JMeter beanshell 中常用的内置对象及其使用。 注&#xff1a;示例使用JMeter版本为5.1 1. vars 如 API 文档 所言&#xff0c;这是定义变量的类&a…

【点云处理教程】04 Python 中的点云过滤

一、说明 这是我的“点云处理”教程的第 4 篇文章。“点云处理”教程对初学者友好&#xff0c;我们将在其中简单地介绍从数据准备到数据分割和分类的点云处理管道。 在本教程中&#xff0c;我们将学习如何使用 Open3D 在 python 中过滤点云以进行下采样和异常值去除。使用 Open…

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集 前言相关介绍COCO格式实例分割数据集转换为YOLO格式实例分割数据集coco格式对应的json文件&#xff0c;以test.json为例格式转换代码&#xff0c;内容如下 前言 由于本人水平有限&#xff0c;难免出现错漏&#xf…

【JAVASE】什么是方法

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 方法 1. 方法概念及使用1.1 什么是方法1…