vue3使用高德地图api,海量点,多边形围栏,热力图,轨迹线(一)

2023-10-29

首先在项目中引入高德地图,这个就不详细教了,官方文档都有教程,这里讲如何在页面中使用各种api方法。

一、初始化map对象

首先在页面初始化时创建地图map对象,保存这个map对象,后面的所有api方法都要用到这个map对象。以下是初始化map对象代码示例,一些具体的参数并未详细展示,请勿完全复制。

let map;


AMapLoader.load({
    key: MapConfigure.amapKey,
    version: "2.0",
    plugins: ["AMap.MarkerCluster"]
  })
    .then(AMap => {
      // 创建地图实例
      map = new AMap.Map(instance.refs.mapview, options);

      //地图中添加地图操作ToolBar插件
      map.plugin(["AMap.ToolBar", "AMap.MapType", "AMap.Circle"], () => {//此处填写需要用到的高德地图插件,我只写了Circle插件作展示,海量点、热力图等等都类似
        map.addControl(new AMap.ToolBar());
        //地图类型切换
        map.addControl(
          new AMap.MapType({
            defaultType: 0
          })
        );
      });
      map.setCenter([lng.value, lat.value]); //设置初始地图中心位置,lng经度,lat纬度
      map.setZoom(15); //设置初始地图层级
      
      //绑定地图点击事件,获取点击的经纬度
      map.on("click", showInfoClick);
      complete();
    })
    .catch(() => {
      mapSet.loading = false;
      throw "地图加载失败,请重新加载";
    });


function showInfoClick(e) {
  lng.value = e.lnglat.getLng(); //记录最后一次点击的经纬度
  lat.value = e.lnglat.getLat();
}

二、Marker点标记

     let marker;
     // 默认在地图中间生成一个围栏和点标记
     marker = new AMap.Marker({
        icon: new AMap.Icon({
          image:
            "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png",
          size: new AMap.Size(26, 56), //图标大小
          imageSize: new AMap.Size(26, 36)
        }),
        position: [lng.value, lat.value],
        offset: new AMap.Pixel(-12, -30)
      });
      renderCircle();//调用自己定义的生成圆形围栏方法,此方法在 三、Circle中
      marker.setMap(map);

实现效果:

三、Circle圆形围栏

let Circle;

Circle = new AMap.Circle({
    center: [lng.value, lat.value], // 站点坐标,定位圆点位置
    radius: Number(props.radius), //Circle半径,我取得是父组件传过来的值
    strokeColor: "white", //边框颜色
    strokeWeight: 2, // 边框宽度
    strokeOpacity: 0.5, //边框透明度
    fillColor: "rgba(0,0,128,64)", // 圆点填充颜色
    fillOpacity: 0.2 // 圆点填充透明度
  });
  Circle.setMap(map);

 结合二和三的效果图: 

多边形围栏polygon和可编辑多边形围栏polygonEditor

(绘制方法,单击鼠标左键新增点位,双击鼠标左键或单击鼠标右键结束绘制)

let polygon;
let polygonEditor;

if (polygonEditor) {//判断存在多边形围栏就先取消编辑并清除之前画的多边形围栏
    polygonEditor.close();
    map.remove(polygon);
  }
  if (mouseTool) {//如果鼠标工具存在先关闭鼠标工具
    mouseTool.close(true);
  }
  ElMessage({
    message: "请在地图中点击鼠标左键设置围栏点",
    type: "warning",
    style: "margin-top:250px;margin-left:50px;"
  });
  // 创建鼠标工具实例
  mouseTool = new AMap.MouseTool(map);
  // MouseTool(map);
  // 绘制多边形
  mouseTool.polygon();
  polygon = new AMap.Polygon({
    map: map,
    path: path,
    strokeColor: "#FF33FF",
    strokeOpacity: 0.2,
    fillColor: "#1791fc",
    fillOpacity: 0.4,
    strokeWeight: 3
  });
  // 多边形绘制完成后的回调
  mouseTool.on("draw", function (e) {
    // 合并已有多边形的点集和新的点集
    path = path.concat(e.obj.getPath());
    mouseTool.close(true);
    // 创建新的多边形,并设置合并后的点集
    polygon.setPath(path);
    // 创建一个多边形编辑器对象
    polygonEditor = new AMap.PolygonEditor(map, polygon);
    // 添加编辑器对象到地图上
    polygonEditor.open();
    // const polygonList = e.obj._opts.path; //多边形的经纬度
    // 将多边形设置到围栏中
    // var fence = new AMap.Fence.Polygon(polygon.getPath());
  });

效果如图:

四、Polyline轨迹线

let Polyline;
// 实例化Polyline类
  polyline = new AMap.Polyline({
    // 线条颜色
    strokeColor: "#3366FF",
    // 线条透明度
    strokeOpacity: 1,
    // 线条宽度
    strokeWeight: 5,
    // 折线样式,可选值:'solid'、'dashed'
    strokeStyle: "solid",
    // 是否延迟显示,支持在地图加载完毕后再显示
    geodesic: true,
    // 线条的坐标点数组
    path: row.langLatAllList,
    // 是否绘制成大地线
    isOutline: true,
    // 是否显示端点图标
    showDir: true
  });
  // 将Polyline对象添加到地图上
  map.add(polyline);

效果图:

 注意:每次初始化插件示例或者调用方法的时候一定要确定map对象存在,不然会报错!所以在一开始初始化就存好map对象。

海量点、热力图、信息窗体等请看下篇:

vue3使用高德地图api,海量点,多边形围栏,热力图,轨迹线(二)

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

vue3使用高德地图api,海量点,多边形围栏,热力图,轨迹线(一) 的相关文章

随机推荐

  • HTML5手机端网页开发

  • 关于postcss-px-to-viewport的使用经验

    最近在工作项目使用中新接触到postcss px to viewport 在使用上遇到一个坑 也有段时间没更新啦 记录分享一下 希望对你有所帮助 直接上重点 节省在网站苦苦寻找有效答案的你 gt gt gt 我所遇到的坑 由于项目需要 需要
  • 服务器实现端口转发的N种方式

    简介 在一些实际的场景里 我们需要通过利用一些端口转发工具 比如系统自带的命令行工具或第三方小软件 来绕过网络访问限制触及目标系统 下文为大家总结了linux系统和windows系统端口转发常用的一些方法 注 Linux实现端口转发需要内核
  • 在react中使用Markdown编辑器

    提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 在react中使用Markdown编辑器 二 使用步骤 实现效果 安装 使用 安装 使用 一 在react中使用Markdown编辑器 首先我们需要清楚Mark
  • File类(Java)

    目录 1 File类定义 2 File类构造方法 常用摘要 3 练习 4 主要成员方法 1 File类定义 1 File类主要是JAVA为文件这块的操作 如删除 新增等 而设计的相关类 2 File类的包名是java io 其实现了Seri
  • Vue3常规登录页面模板

    本文基于vue3 JavaScript 使用vue3的setup语法糖书写方式 setup语法糖也是当前各大适用Vue的框架官网都在推崇的书写方式 此外各大主流框架的源码首选是TypeScript 而不是JavaScript 登录页面模板
  • 正则表达式匹配字符串中的任何空格

    a zA Z0 9 匹配空格包括 r t n f 的含义是后面出现一个或多个 s
  • SSM+Layui整合

    文章目录 概述 依赖 各种配置文件 web xml spring配置 springMVC配置 MyBatis配置 Mapper映射文件 关于Layui 概述 刚学完了ssm 打算自己上手做一个项目玩玩 先第一步 整合ssm 自己不会写前端
  • 深度学习中的优化算法之AdaMax

    之前在https blog csdn net fengbingchun article details 125018001 介绍过深度学习中的优化算法Adam 这里介绍下深度学习的另一种优化算法AdaMax AdaMax与Adam来自于同一
  • 数据挖掘笔记(三)—数据预处理

    1 原始数据存在的几个问题 不一致 重复 含噪声 维度高 2 数据预处理包含数据清洗 数据集成 数据变换和数据归约几种方法 3 数据挖掘中使用的数据的原则 应该是从原始数据中选取合适的属性作为数据挖掘属性 这个选取过程应参考的原则是 尽可能
  • TypeError: this.getOptions is not a functionj解决方案

    遇到的问题 在使用react搭建项目 在配置less的时候一直报如下错误 我以为webpack配置错了 尝试了很多办法 最终找到了原因 less loader版本过高 解决方案 1 npm uninstall less loader 2 n
  • vwware docker安装seata

    参考 docker安装seata
  • vue Mac环境下npm run serve提示 node_modules/.bin/vue-cli-service: Permission denied

    Mac环境下 使用 npm run dev 命令运行 Vue 项目时 报错 no such file or directory open package json 但是 明明项目中有package json这个文件 如下图 问题 一般这种情
  • java 泛型 class< >_Java中泛型T和Class以及Class的理解(轉)

    注意 class是java的關鍵字 在聲明Java類時使用 Class類的實例表示Java應用運行時的類 class ans enum 或接口 interface and annotation 每個Java類運行時都在JVM里表現為一個Cl
  • STM32 复位时钟控制—RCC

    时钟分为系统时钟 外设时钟 我们今天来看一下系统时钟 stm32的系统时钟由固件库配置好 不需要修改 我们了解认识一下 并学会修改使用 目录 1 系统时钟介绍 8个部分 2 程序分析 1 用HSE配置系统时钟 2 用HIS配置系统时钟 下图
  • Docker容器连不了网的一种解决方式

    问题分析 首先 容器在之前用到过 联网也没有问题 我这边使用的还是容器内固定ip 所以问题肯定是后面才出现的 容器本身没有做任何改变 解决方式 如果你跟我一样 docker容器是突然访问不了网 包括容器内访问外网 宿主机访问容器 都访问不了
  • 【目标检测】30、Rectified IoU: Single-Shot Two-Pronged Detector with Rectified IoU Loss

    文章目录 一 背景 二 方法 三 效果 论文 Single Shot Two Pronged Detector with Rectified IoU Loss 代码 暂无 出处 ACM MM 2020 一 背景 在检测任务重 IoU 经常被
  • Eclipse引用外部project android library

    http my oschina net u 1777508 blog 345022 1 应用外部jar包 我们平时用的最多的方式 把要引入的jar包 放在project的lib目录下 然后 Add JARs 2 引用java Project
  • Rocky9 KVM网桥的配置

    KVM的默认网络模式为NAT 借助宿主机模式上网 现在我们来改成桥接模式 这样外界就可以直接和宿主机里的虚拟机通讯了 Bridge方式即虚拟网桥的网络连接方式 是客户机和子网里面的机器能够互相通信 可以使虚拟机成为网络中具有独立IP的主机
  • vue3使用高德地图api,海量点,多边形围栏,热力图,轨迹线(一)

    首先在项目中引入高德地图 这个就不详细教了 官方文档都有教程 这里讲如何在页面中使用各种api方法 一 初始化map对象 首先在页面初始化时创建地图map对象 保存这个map对象 后面的所有api方法都要用到这个map对象 以下是初始化ma