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

news2024/11/17 15:39:57

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Go语言中的并发编程【29】【原子操作(atomic包)、并发安全性】

文章目录 原子操作(atomic包)原子操作atomic包示例 并发安全性 原子操作(atomic包) 原子操作 代码中的加锁操作因为涉及内核态的上下文切换会比较耗时、代价比较高。针对基本数据类型我们还可以使用原子操作来保证并发安全&#xff0c;因为原子操作是Go语言提供的方法它在用户…

iOS 应用上架的步骤和工具简介

APP开发助手是一款能够辅助iOS APP上架到App Store的工具&#xff0c;它解决了iOS APP上架流程繁琐且耗时的问题&#xff0c;帮助跨平台APP开发者顺利将应用上架到苹果应用商店。最重要的是&#xff0c;即使没有配置Mac苹果机&#xff0c;也可以使用该工具完成一系列操作&#…

C#实现滑动拼图验证码

开发环境&#xff1a;C#&#xff0c;VS2019&#xff0c;.NET Core 3.1&#xff0c;ASP.NET Core 1、建立一个验证码控制器 新建两个方法Create和Check&#xff0c;Create用于创建验证码&#xff08;返回2张图片和令牌&#xff09;&#xff0c;Check用于验证&#xff08;验证图…

EXCEL数据自动web网页查询----高效工作,做个监工

目的 自动将excel将数据填充到web网页,将反馈的数据粘贴到excel表 准备 24KB的鼠标连点器软件(文末附链接)、Excel 宏模块 优势 不需要编程、web验证、爬虫等风险提示。轻量、稳定、安全。 缺点 效率没那么快 演示 宏环境 http://t.csdn.cn/DRAC2 宏按钮

idea导入maven项目问题

问题产生原因&#xff1a; ①idea加载maven项目&#xff0c;如果网络不通畅&#xff0c;会在maven仓库中产生一个文件&#xff0c;如下图所示: ②当网络通畅时&#xff0c;在下载就会因为此文件导致无法下载正确的maven依赖 解决方案&#xff1a; ①打开maven仓库的根目录 ②…

(学习笔记-内存管理)虚拟内存

单片机是没有操作系统的&#xff0c;每次写完代码&#xff0c;都需要借助工具把程序烧录进去&#xff0c;这样程序才能跑起来。另外&#xff0c;单片机的CPU是直接操作内存的[物理地址]。 在这种情况下&#xff0c;要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2…

骨传导耳机和入耳式耳机哪个好?骨传导耳机适合什么人群使用

骨传导耳机和入耳式耳机哪个好&#xff0c;这个问题&#xff0c;首先我们先了解一下骨传导耳机的对比入耳式耳机的优势有哪些&#xff1a; &#xff08;1&#xff09;健康 骨传导耳机因为是利用骨振动原理&#xff0c;完全不需要经过我们耳膜进行传输&#xff0c;可以有效缓解…

Selenium API基础 8种定位

id定位 class定位 xpath定位 css定位 link partial_link模糊匹配 tag name

Redis 哨兵 (sentinel)

是什么 官网理论&#xff1a;https://redis.io/docs/management/sentinel/ 吹哨人巡查监控后台 master 主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务。 作用&#xff1a;无人值守运维 哨兵的作用&#xff1a; 1…

index页面通过<script>引入根目录下的js文件后,vite打包项目后,项目中无js文件解决方法

解决方法&#xff1a; 根据打包报错提示&#xff0c;如图&#xff1a;即在<script>标签中加入&#xff1a;type&#xff0c;如图&#xff1a; 再打包 js文件就会被打包进去&#xff01;

华为认证 | HCIE考过了,证书编号怎么查?

我们都知道&#xff0c;每一个HCIE都拥有属于自己的独一无二的编号&#xff0c;这个编号到底是指什么呢&#xff1f; HCIE作为华为专家级的认证&#xff0c;考试难度极高&#xff0c;你要通过HCIE的笔试、实验LAB考试。 当你“过五关斩六将”&#xff0c;通过LAB的那一刻&…

手风琴案例(jQuery)

案例效果 代码实现 jQuery代码&#xff08;两种方法&#xff09; 方法一&#xff1a;hover版 $(function () {$(".king li").hover(function() {$(this).addClass("current").siblings().removeClass("current");}, function() {$(".king…

DDSv1.4规范(中文版)

实时数据分发 (DDS) V1.4 (2015-04-10正式发布) https://www.omg.org/spec/DDS/1.4/PDF http://www.omg.org/spec/DDS/20140501/dds_dcps.idl

vue3-eslint-prettier-czgit配置

vue3 eslint prettier cz-git 一&#xff1a;vue3 1.1 vue3创建 输入命令后根据提示选择&#xff0c;项目是ts所以必选typescript pnpm create vite1.2 安装依赖 pnpm i1.3 运行 pnpm run dev二&#xff1a;配置eslint 2.1 执行安装命令 pnpm add eslint -D2.2 初始化…

POI 导出 树形结构

参考文章&#xff1a;(327条消息) Excel树状数据绘制导出_excel导出树形结构_Deja-vu xxl的博客-CSDN博客https://blog.csdn.net/weixin_45873182/article/details/120132409?spm1001.2014.3001.5502 Overridepublic void exportPlus(String yearMonth, HttpServletRequest re…

SQL-每日一题【627. 变更性别】

题目 Salary 表&#xff1a; 请你编写一个 SQL 查询来交换所有的 f 和 m &#xff08;即&#xff0c;将所有 f 变为 m &#xff0c;反之亦然&#xff09;&#xff0c;仅使用 单个 update 语句 &#xff0c;且不产生中间临时表。 注意&#xff0c;你必须仅使用一条 update 语句…

Bad owner or permissions on ~/.ssh/config

错误原因&#xff1a;设置本地所有文件的权限为741等。。。 在执行ssh免密码登录时报如下的错误&#xff1a;Bad owner or permissions on ~/.ssh/config。 解决方案&#xff1a; chmod 600 ~/.ssh/config

MySQL笔记——数据库当中的事务以及Java实现对数据库进行增删改查操作

系列文章目录 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库&#xff0c;对MySQL数据库的简单操作&#xff0c;MySQL的外接应用程序使用说明 MySQL笔记——表的修改查询相关的命令操作 MySQL案例——多表查询以及嵌套查询 文章目录 系列文章目录 前言 一…

OpenLayers入门,html原生网页如何使用OpenLayers地图

专栏目录: OpenLayers入门教程汇总目录 前言 尽管现在大部分网页都是使用vue或者react开发了,但是还是有不少开发者使用的是网页原生html进行开发,或者是老项目维护的需要,所以为了照顾使用html原生网页的同学们,本章简单讲解一下如何使用原始html网页情况下使用OpenLay…

网站服务器出错的原因分析和解决方法

​  网站在日常运行的过程中&#xff0c;难免会遇见一些问题&#xff0c;这次我们就来分析关于网站服务器出错、服务器异常的原因以及如何解决网站服务器错误的方法。 如何知道是网站服务器的问题呢? 只要网站不能正常访问运行&#xff0c;那么一定会反馈相关的错误代码和原…