Vue-高德地图-立体多边形绘制

news2025/1/14 4:06:30

前言

在前端开发中,地图展示是常见的需求之一。而高德地图作为国内知名的地图服务商,其提供的 API 功能丰富,使用也相对简单。

本篇文章将介绍如何在 Vue2 中使用 @amap/amap-jsapi-loader 安装高德地图并展示地图。

准备工作

  1. 首先需要在高德开放平台注册账号,并创建一个应用获取相应的应用 key。

  2. 安装 @amap/amap-jsapi-loader。

npm install @amap/amap-jsapi-loader

使用

  // 初始化高德地图
  mounted() {
    AMapLoader.load({
      key: "你的应用 key",
      version: "2.0",
      plugins: ["AMap.Scale", "AMap.OverView", "AMap.ToolBar", "AMap.MapType"],
      Loca: {
        version: "2.0",
      },
    }).then((AMap) => {
      this.initMap(AMap);
    });
  },
  methods: {
    initMap(AMap) {
      this.map = new AMap.Map("mapContainer", {
        viewMode: "3D", //开启3D视图,默认为关闭
        mapStyle: "amap://styles/darkblue",//主题样式
        zoom: 10,
        center: [116.397428, 39.90923],
      });
    },
  },

 2D多边形立体效果

 这里介绍一种工具GeoJSON。

1.在地图上选取要素类型(点、线、面等),并使用鼠标在地图上画出要素形状。

2.在右侧面板中可以看到生成的GeoJSON数据,包括要素类型、坐标信息和属性信息。

 比如说这样一个图形

 我们画好获取到他的点之后在代码中绘制

const pathPos = [
  {
    point: [
      [95.50358686014329, 29.919373253410868],
      [95.50256641846386, 29.91972649467766],
      [95.50053154990024, 29.920407889723833],
      [95.49566282916277, 29.922062194380487],
      [95.4954304901953, 29.921596007328503],
      [95.50230405502856, 29.91927886419461],
      [95.50174713134766, 29.918172713504486],
      [95.5009011032626, 29.91692351110885],
      [95.49447942199674, 29.91908778583877],
      [95.4942831669282, 29.91861842590066],
      [95.50071476626823, 29.916446908047305],
      [95.49728739203402, 29.911522353660644],
      [95.49810791015625, 29.91107177734375],
      [95.50173653782093, 29.916105035072235],
      [95.50948951439364, 29.913471468464593],
      [95.5096392976834, 29.913965572980317],
      [95.50200937406373, 29.91652722100838],
      [95.50334996945577, 29.918886668898267],
      [95.51045504489969, 29.91652391201069],
      [95.51067844600743, 29.91698476840213],
      [95.50358686014329, 29.919373253410868],
    ],
  },
  {
    point: [
      [95.50354394479908, 29.91961502670651],
      [95.50252350311965, 29.919968267115472],
      [95.50048863455604, 29.920649660506953],
      [95.49561991381856, 29.922303961146138],
      [95.4953875748511, 29.921837775226294],
      [95.50226113968435, 29.91952063771944],
      [95.5008581879184, 29.917165290353125],
      [95.49443650665253, 29.919329559827638],
      [95.49424025158399, 29.918860201029265],
      [95.50067185092402, 29.91668868844885],
      [95.49724447668981, 29.911764146018857],
      [95.49806499481204, 29.911313570795876],
      [95.50169362247674, 29.91634681630389],
      [95.50944659904944, 29.913713256090627],
      [95.5095963823392, 29.91420735940669],
      [95.50196645871952, 29.916769001214917],
      [95.50330705411157, 29.919128443375513],
      [95.51041212955549, 29.916765692225262],
      [95.51063553066322, 29.91722654749765],
      [95.50354394479908, 29.91961502670651],
    ],
  },
  {
    point: [
      [95.50352248712694, 29.919968386620923],
      [95.50250204544751, 29.92032162577616],
      [95.50046717688392, 29.921003016749225],
      [95.49559845614642, 29.922657311516648],
      [95.49536611717896, 29.92219112725151],
      [95.50223968201222, 29.919873997968878],
      [95.50083673024626, 29.917518658961775],
      [95.4944150489804, 29.919682920755196],
      [95.49421879391186, 29.919213563622648],
      [95.50065039325189, 29.917042058748894],
      [95.49722301901768, 29.912117533794117],
      [95.49804353713992, 29.91166696016994],
      [95.50167216480462, 29.9167001878172],
      [95.5094251413773, 29.914066636949627],
      [95.50957492466708, 29.914560738512343],
      [95.50194500104739, 29.917122371229958],
      [95.50328559643944, 29.919481805016893],
      [95.51039067188336, 29.91711906225206],
      [95.51061407299109, 29.917579915888904],
      [95.50352248712694, 29.919968386620923],
    ],
  },
];

通过遍历pathPos画多边形 

      pathPos.forEach((item, index) => {
        const polygon = new this.AMapObj.Polygon({
        path: item.point,
        fillColor: "#12447d", // 多边形填充颜色
        strokeWeight: 2, // 线条宽度,默认为 1
        strokeColor: "#027aff", // 线条颜色
        fillOpacity: 0.5, // 透明度
        strokeStyle: "dashed", //虚线
        strokeDasharray: [10, 10],
      });
      this.baseMapShp.push(polygon);
      });
      this.map.add(this.baseMapShp);

 

3D多边形立体效果 

北京公交线路-线图层-示例详情-Loca API 2.0 | 高德地图API (amap.com)

 使用Loca API

 const json={
  type: "FeatureCollection",
  features: [
    {
      type: "Feature",
      properties: {
        type: 1,
        h: 1,
      },
      geometry: {
        type: "LineString",
        coordinates: [
          [95.503586860143287, 29.919373253410868],
          [95.502566418463857, 29.919726494677661],
          [95.500531549900245, 29.920407889723833],
          [95.495662829162768, 29.922062194380487],
          [95.495430490195304, 29.921596007328503],
          [95.50230405502856, 29.919278864194609],
          [95.500901103262606, 29.916923511108848],
          [95.494479421996743, 29.919087785838769],
          [95.494283166928199, 29.918618425900661],
          [95.500714766268231, 29.916446908047305],
          [95.497287392034025, 29.911522353660644],
          [95.49810791015625, 29.91107177734375],
          [95.501736537820932, 29.916105035072235],
          [95.509489514393636, 29.913471468464593],
          [95.509639297683407, 29.913965572980317],
          [95.502009374063732, 29.91652722100838],
          [95.503349969455769, 29.918886668898267],
          [95.510455044899686, 29.916523912010689],
          [95.510678446007432, 29.916984768402131],
          [95.503586860143287, 29.919373253410868],
        ],
      },
    },
    {
      type: "Feature",
      properties: {
        type: 2,
        h: 2,
      },
      geometry: {
        type: "LineString",
        coordinates: [
          [95.503586860143287, 29.919373253410868],
          [95.502566418463857, 29.919726494677661],
          [95.500531549900245, 29.920407889723833],
          [95.495662829162768, 29.922062194380487],
          [95.495430490195304, 29.921596007328503],
          [95.50230405502856, 29.919278864194609],
          [95.500901103262606, 29.916923511108848],
          [95.494479421996743, 29.919087785838769],
          [95.494283166928199, 29.918618425900661],
          [95.500714766268231, 29.916446908047305],
          [95.497287392034025, 29.911522353660644],
          [95.49810791015625, 29.91107177734375],
          [95.501736537820932, 29.916105035072235],
          [95.509489514393636, 29.913471468464593],
          [95.509639297683407, 29.913965572980317],
          [95.502009374063732, 29.91652722100838],
          [95.503349969455769, 29.918886668898267],
          [95.510455044899686, 29.916523912010689],
          [95.510678446007432, 29.916984768402131],
          [95.503586860143287, 29.919373253410868],
        ],
      },
    },
  ],
};
      let geo = new Loca.GeoJSONSource({
        data: json,
      });
      let ll = new Loca.LineLayer({
        loca,
      });
      let colors = ['#f7fcf5', '#e5f5e0'];
      ll.setSource(geo, {
        color: function (index, feature) {
          var i = index % colors.length;
          return colors[i];
        },
        lineWidth: (index, feature) => {
          return 2;
        },
        altitude: function (index, feature) {
          return 100 * index;
        },
        dash: function (index, feature) {
          return [10];
        },
      });

总结

使用 @amap/amap-jsapi-loader 可以方便地在 Vue2 中使用高德地图,同时也可以根据自己的需求添加相应的插件。希望本篇文章能够帮助大家快速上手使用高德地图。

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

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

相关文章

02 【Sass语法介绍-变量】

sass有两种语法格式Sass(早期的缩进格式:Indented Sass)和SCSS(Sassy CSS) 目前最常用的是SCSS,任何css文件将后缀改为scss,都可以直接使用Sassy CSS语法编写。 所有有效的 CSS 也同样都是有效的 SCSS。 Sass语法介绍-变量 1.前言 Sass …

华为面试题:1+4=5,2+5=12,3+6=21,问8+11=?网友:幼儿园级别

面试,一直都是职场人士绕不过去的坎,对于有的人来说,或许更擅长日常的工作,在面试环节可谓是自己的薄弱环节,但对于有的人来说,相比于工作,更擅长应付面试! 最近,有一位…

为了了解国外AI最新动态,分享我经常逛的6 个 YouTube AI频道

AI 正在迅速发展,每周都会有一篇关于该领域新发展的新论文,一种可以提高您工作效率的 AI 工具,或者一个改变一切的公告。 这就是为什么在本文中,我想与您分享最好的 YouTube 频道,以便及时了解 AI 的最新动态。这些 Y…

JUC多并发编程 原子类

基本类型原子类 AtomicIntegerAtomicBooleanAtomicLong 方法说明public final int get()获取当前的值public final int getAndSet(int newValue)获得当前的值,并设置新的值public final int getAndIncrement()获得当前的值,并自增public final int getAndDecremen…

C++内存管理之拷贝memcpy、分配malloc 与释放free

1.内存拷贝 memcpy C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 复制 n 个字节到存储区 str1。 #声明: void *memcpy(void *str1, const void *str2, size_t n)#********************** str1 -- 指向用于存储复制内容的目标数组…

【数据结构】二叉树-OJ

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一、相同的树 二、翻转二叉树 三、单值二叉树 四、 二叉树的最大深度 一、相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个…

第六章 3D地形搭建(上)

Unity 提供了多种工具来创建环境特征,例如地形和植被。要在场景中添加地形 (Terrain) 游戏对象,请从菜单中选择 GameObject > 3D Object > Terrain。此过程也会在 Project 视图中添加相应的地形资源。默认情况,场景中出现一个大型平坦的…

Spring AOP 代码加案例详解

Spring AOP目录 Spring AOP主要内容代理模式静态代理动态代理JDK动态代理CGLIB 动态代理JDK代理与CGLIB代理的区别 Spring AOP当前项目存在问题和解决Spring AOP的介绍AOP基本概念实现AOP的两种方式 Spring AOP —— Schema-based方式前置通知 - 入门案例思考后置通知异常通知环…

高压功率放大器在脉冲X射线源技术及火星X射线通信中的应用

实验名称:高速调制脉冲X射线源技术及火星X射线通信应用研究 研究方向:通信技术 测试目的: 火星是深空探测的热点区域,随着对火星探测的深入,未来火星探测器将面临传统通信方式难以应对的恶劣情况,例如火…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

测试岗35k*16薪,性能测试面试题问什么?测试老鸟总结分析(附答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

【Python/机器学习】不使用Conda安装Pytorch和Torchvision(Windows系统)

这篇文章介绍如何不使用conda等包管理系统在Windows系统上直接使用pip安装Pytorch和Torchvision。首先你需要有Python 3.6以上的64位环境(32位是不可以的哟!),并且假设你有NVIDIA显卡且已安装CUDA。 文章目录 1. 查看CUDA版本2. 找…

简记二分算法模板与代码案例:整数二分

本文以 Java 语言实现,整理的代码模板适用于编程竞赛。对代码模板原理的讲解不多,主要记录一下如何使用。 目录 一、算法模板:整数二分 二、例题 一、算法模板:整数二分 整数二分有两套算法模板,这两套算法模板几乎…

03 【Sass语法介绍-嵌套】

1.前言 在企业的实际项目开发中,Sass 的嵌套可以说是非常非常有用的,它可以让你的 CSS 代码易于管理和维护,看起来也比较清晰,这也是 Sass 中很基础的一个知识点,首先掌握这个至关重要!在此章节我们将学习…

Golang题目总结

1. slice底层数据结构和扩容原理 数据结构 Go 的 slice 底层数据结构是由一个 array 指针指向底层数组,len 表示切片长度,cap 表示切片容量。扩容原理 (1)扩容思路:对于 append 向 slice 添加元素时,若 sl…

STM32-HAL-SPI-读写W25Q128FV-JEDEC ID(1)

文章目录 一、SPI串行通信协议1.1 SPI通信协议简介1.2 SPI工作原理1.3 SPI特性 二、W25Q128FV芯片介绍2.1 芯片基本参数介绍2.2 芯片管脚介绍2.3 技术手册等更多信息 三、开发板的板载Flash的连接电路四、测试准备五、初始化片上外设SPI15.1 初始化SPI15.2 设置片选引脚PB145.3…

【网页小功能 最简单入门!!!表白墙】【html+javaScript+css实现 简易 网页版 表白墙】

网页小功能 最简单入门&#xff01;&#xff01;&#xff01; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"…

详解达梦数据库字符串大小写敏感

检查数据库实例大小写敏感信息 场景一、初始化数据库实例为大小写敏感库 DDL操作 总结&#xff1a; 大小写敏感的数据库中&#xff1a; 创建表时&#xff1a; ①如果不对表名或列名添加""&#xff0c;那么表名和列名都自动转换为大写形式&#xff1b; ②如果对表…

自动化运维工具之Ansible

目录 一、自动化运维 1、通过xshell自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 (1) ansible命令行模块 (2) command模块 (3) shell模块 (4) cron模块 (5) us…

程序计算任意连续的12个月公里数不超三万公里预警

为了比亚迪的电池终身质保&#xff0c;写了个简单算法&#xff0c;计算任意12个连续的月份公里数加起来不超过3万公里的预警import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors;/***…