Vue2项目使用高德地图

2023-11-19


一、账号准备

1.注册账号

首先,注册开发者账号,成为高德开放平台开发者 https://console.amap.com/dev/index

2.获取key

登录高德开放平台后,进入左侧边栏应用管理-我的应用,右上角创建新应用,应用名称与应用类型任意填写

在这里插入图片描述

选择添加key后,填写表单,注意key名称的命名规范

在这里插入图片描述

提交成功后,就可以看到我们申请的key了

二、快速上手

1.安装

npm i @amap/amap-jsapi-loader --save

2.创建地图

首先,我们需要在main.js中引入高德地图,

import AMapLoader from "@amap/amap-jsapi-loader";

AMapLoader.load({
  'key': '申请的key值',           
  'version': '2.0',   // 指定要加载的 JSAPI 的版本,缺少时默认为 1.4.15
  'plugins': ['AMap.Scale','AMap.GeoJSON']           // 需要使用的的插件列表,如比例尺'AMap.Scale'等,更多插件请看官方文档
}).then((AMap) => {
  Vue.use(AMap)
})

创建div标签作为地图容器,并设置id,一定要设置宽度和高度

 <div id="container"></div>
 ...
 #container{
	 width: 1600px;
	 height: 700px;
 }

声明map对象,注意:此处声明map对象时,vue2和vue3的用法有区别,不能混合使用,否则会出现较多问题
此处只展示在Vue2中的使用

<script>

//map对象应该在此处采用非响应式的普通对象声明,而不是在data函数中,否则地图会很卡
	var map = {};
	
	export default {
	  data() {
	  //map:{}
	  },
	}
	
</script>

接下来,定义创建地图的函数,并在mounted中调用,地图的更多参数请看官方文档

mounted() {
	this.createMap()
},

methods: {
	createMap(){
		//填入地图容器div的id
		map = new AMap.Map('container', {
			zoom: 13,	//设置地图的缩放级别
			zooms: [8, 20],	//设置地图的缩放级别区间
			center: [113.22, 22.93],	//设置地图中心点坐标
			mapStyle: 'amap://styles/darkblue',		//设置地图的显示样式,更改darkblue为你想要的样式
			features: ['road','point']	//设置地图的底图元素,缺少则显示全部元素,bg区域面、point兴趣点、road道路及道路标注、building建筑物
		});
	}
}

在这里插入图片描述

完成以上步骤,一张简单的地图就做好了

在这里插入图片描述

3.点标记

当我们需要给地图添加一些点标记时,可以使用Marker来实现,数据量在500以内推荐使用

// 创建一个 Marker 实例:
var marker = new AMap.Marker({
	position: [113.0, 23.15],   // 经纬度
	//创建一个自定义图标实例
	icon: new AMap.Icon({
		size: new AMap.Size(27, 30),    // 图标尺寸
		image: '//vdata.amap.com/icons/b18/1/2.png',  // 自定义图像的url
		imageSize: new AMap.Size(27, 30)   // 根据所设置的大小拉伸或压缩图片
	}),
	title: '广东佛山'	//当鼠标悬浮在标记上时,会显示该内容
});

//将点标记添加至地图
map.add(marker)

//将该点标记删除
map.remove(marker)

//删除多个点标记
map.remove(markerList)

在这里插入图片描述

另外,高德地图还提供了圆形标记 CircleMarker、灵活点标记 ElasticMarker、文本标记 Text,其用法都是大同小异

4.海量点标记

当需要给地图添加千级以上甚至万级的点标记时,LabelMarker 是更好的选择,LabelMarker 在万级以上数据也具有较好的性能,配置也更加灵活,另外,还支持避让功能

      var labelMarker = new AMap.LabelMarker({
        name: '标注1',	// 此属性并不会绘制在地图上,只是作为该点的id使用
        position: [113.0, 23.15],
        opacity:0.8,	//标注层透明度
        icon: {
          type: 'image',	// 图标类型,现阶段只支持 image 类型
          image: '//vdata.amap.com/icons/b18/1/2.png',	// 图片 url
          size: [30, 30],	// 图片尺寸
          anchor: 'center',		// 图片相对 position 的锚点,默认为 bottom-center
        },
        text: {
          content: 'labelMarker',	// 要展示的文字内容
          direction: 'right',	// 文字方向,有 icon 时为围绕文字的方向,没有 icon 时,则为相对 position 的位置
          offset: [0, 0],	// 在 direction 基础上的偏移量
          style: {
            fontSize: 12,	// 字体大小
            fillColor: '#22886f',	// 字体颜色
            strokeWidth: 2,	// 描边宽度
          },
        }
      });
	//将点标记添加至地图
	map.add(labelMarker)

在这里插入图片描述

当数据量达到十万以内并需要较好的性能时,可以使用MassMarks ,目前仅适用于html5浏览器,用的比较少

5.简易行政区图

当我们需要基于行政区块的数据可视化、行政区边界展示时,可以通过DistrictLayer插件实现,不过我个人更推荐使用下文的GeoJSON

名称 适用范围
AMap.DistrictLayer.World 世界全部国家和地区的区域面和边界一并展示,可分别配置各国区域面的颜色,统一配置国界线、海岸线的颜色
AMap.DistrictLayer.Country 单独展示某个国家或地区的所有省级行政区域,可配置国界颜色、分别配置各省区域的面填充色和边界颜色;中国支持全部地级市一级的展示,可配置国界颜色、省界线、市界限颜色和省、市区域的面填充色
AMap.DistrictLayer.Province 单独展示一个或者组合展示多个中国行政区的区域,支持展示省级、市级、县级。可配置各省、市、县的边界颜色和面填充色
    //绘制广东省区域
    var disProvince = new AMap.DistrictLayer.Province({
        zIndex: 10,
        adcode: ['440000'],//地址码
        depth: 1,
        styles: {
          'fill': 'rgba(255,255,255,0.4)', 	//设置背景颜色
          'province-stroke': 'cornflowerblue',	//边界线颜色
          'city-stroke': 'red',		//当depth>0时,设置市级边界线
        }
      })
      disProvince.setMap(map)

在这里插入图片描述

6. GeoJSON

当需要绘制区域覆盖物群组时,GeoJSON是不错的选择
首先我们可以去阿里云提供的地理小工具中获取GeoJSON,在左侧地图选择需要的区域后,右侧有多种方式可以获取到json

在这里插入图片描述

//创建GeoJson实例
     var geoJson = new AMap.GeoJSON({
        geoJSON: '填入获取的json',   // GeoJSON对象
        getPolygon: function (geojson, lnglats) {
          return new AMap.Polygon({
            path: lnglats,
            strokeColor: 'rgb(255,192,0)',	//设置区域边界线
            fillColor: 'rgb(255,255,255)',	//设置区域背景颜色
            fillOpacity: 0.1,
          });
        }
      });
      map.add(geoJson);

在这里插入图片描述

三、绑定事件

更新中…


总结

这篇文章主要是展示了一些高德地图api简单且常用的功能,希望能给第一次使用高德地图api的朋友带来一些帮助。
第一次写博客,有错误或者有待优化的地方还请大家指出。

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

Vue2项目使用高德地图 的相关文章

随机推荐

  • mysql中subsrt_MySQL

    MySQL SUBSTR 函数 截取字符串 SUBSTR 与SUBSTRING 意思相等 函数语法 SUBSTR str pos 截取从pos位置开始到最后的所有str字符串 SUBSTR str pos len 参数说明 str为列名 字
  • X2000 Linux 驱动中配置GPIO的上下拉

    由于sdk不支持标准gpio api函数int gpio pull updown unsigned gpio unsigned value 需要用到soc gpio h中的int jzgpio set func int port enum
  • 第一篇博--初入CSDN

    选择开博并计划按月定期发布一些敲码路上的收获和心得 目的是在梳理知识 复盘总结的同时 能够和志同道合的朋友们一起学习 共同进步 在互联网上留下一份自己的痕迹 与诸君共勉 联系方式 631435743 qq com 欢迎大家找我讨论计算机专业
  • 六、IDEA编写HelloWorld并运行

    IDEA IDEA 全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 JavaEE支持 各类版本工具 git svn等 JUni
  • hook中使用ref使用

    对于antd的fom表单 hook使用ref import React useState useEffect useRef from react const dateRef useRef dateRef current setFieldsV
  • 【Umi+Antd+Ts实战】新增商品弹框组件【V1.0】

    新增商品弹框组件 先看效果 1 点击 符号 弹出新增商品组件 路由配置可以参考下面博客 https blog csdn net weixin 43352901 article details 108536112 2 新增商品弹框内容 文件目
  • MySQL数据库20G数据迁移至其他服务器的MySQL库或者云MySQL库

    背景 20G的MySQL数据迁移至火山云MySQL库 使用navicat的数据传输工具迁移速度耗费时间过长 方案一 使用火山云提供的MySQL数据迁移服务 其他大厂应该提供的也有 方案二 使用数据迁移工具kettle 也可使用其他数据迁移工
  • Windows命令行实用技巧:详解del命令参数

    这个命令是用于Windows命令行 CMD 或者PowerShell的 它是使用 del 命令来删除文件 s f 和 q 是该命令的参数 s 参数 这个参数表示递归 即命令会删除指定目录及其子目录中的指定文件 f 参数 这个参数表示强制 即
  • mybatisPlus如何进行联接

    我想左连接某表 plus有没有提供api 类型leftJoin方法 是的 MyBatis Plus 提供了 API 来支持左连接查询 可以使用 leftJoin 方法进行左连接操作 以下是一个示例代码 import com baomidou
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-_terrain使用TerrainCuller

    继续调试 这个是一堆NULL 省事了 然而 真的有这么简单么 想想地球加载起来时 视点变化时
  • 关于命令或语法中的方括号,尖括号等符号的区别

    关于方括号和尖括号的区别 命令说明或者语法说明中包含一些方括号 lt gt 等符号 方括号 表示可选参数 尖括号 表示必填参数 1 基本符号命令 内的内容意思是 可写可不写 那就必须要在 内给出的选择里选一个 lt gt 表示必选 注 不能
  • PKI体系及密码算法

    HTTPS 的诞生 可先参考网络协议 HTTPS协议等文章 明文传输 对称加密 加密 和 解密 使用 相同的 密钥 如果密钥可以安全的传输 那么消息也应该可以安全的传输 非对称加密 上述非对称加密与对称加密效果基本一样 如果公钥可以安全的传
  • squid使用NCSA验证

    如果要在squid中加入用户名和密码的验证 使用NCSA是最方便的 生成用户名 密码文件 用命令 htpasswd 来生成 使用非常简单 生成一个叫passwdfile的密码文件 包含username和password账户 htpasswd
  • 【电子电路】RS485收发器两种典型电路

    1 基本RS 485 电路 图1为一个经常被应用到的SP485R芯片的示范电路 可以被直接嵌入实际的RS 485应用电路中 微处理器的标准串行口通过RXD 直接连接SP485R 芯片的 RO 引脚 通过TXD直接连接SP485R 芯片的 D
  • Markdown基础语法介绍

    何为Markdown Markdown是一种轻量级标记语言 它允许用户以纯文本格式编写文档 然后转换成有效的XHTML或HTML文档 Markdown具备轻量化 跨平台 易读易写等特性 且支持文本 图片 图表等多种展示样式 Markdown
  • 使用Mac的十大最好用神器

    资深 Mac 用户 提升效率的 10 大神器 谢志鹏 大家好 我是曹将的徒弟 Pem 最近刚结束悉尼大学研究生的学习 是一枚正在求职的交互设计师 我是从 2015 年开始使用 Mac 的 如果用一句话来形容 Mac 的使用感受 那就是 令人
  • 下载Freescale CodeWarrior 11.0解决Freescale CodeWarrior 代码限制(不需要license)

    一些NXP的项目需要软件Freescale CodeWarrior的最新版本10 7 但是新安装了软件之后 10 7版本的license只能使用一个月 一个月到期后 就会有代码大小的限制 这个时候 需要花钱购买license 费用几千块钱
  • android.accessibilityservice包介绍

    android accessibilityservice 英文原文 http developer android com reference android accessibilityservice package summary html
  • Ant Design Pro 修改主题设置

    Ant Design Pro 修改主题设置 主题是在项目根目录下的config defaultSettings js文件下内所定义的其中导出的Settings对象中即为默认的主题等配置 如下图 const Settings navTheme
  • Vue2项目使用高德地图

    目录 一 账号准备 1 注册账号 2 获取key 二 快速上手 1 安装 2 创建地图 3 点标记 4 海量点标记 5 简易行政区图 6 GeoJSON 三 绑定事件 总结 一 账号准备 1 注册账号 首先 注册开发者账号 成为高德开放平台