vue + 高德地图 + 标记点(变大变小闪烁动画、多标记点、同一位置标记点显示个数)

本文介绍了如何在Vue项目中集成高德地图,动态绘制多个标记点并实现呼吸动画效果。通过清除原有标记点,遍历设备列表创建新的标记点,并根据设备状态设置不同的标记样式。同时,利用CSS关键帧动画实现标记点的闪烁效果,增加了地图交互的视觉体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其他:
高德地图引入及使用
vue + 高德地图 + 普通标记点

先上效果图:
在这里插入图片描述

	  //绘制地图
	  this.map = new AMap.Map('map', {
        resizeEnable: true,
        center: center,
        zoom: 12
      })
      // 标记点的数据
	  this.deviceList = [
	  	{
	  	  longitude:120,
	  	  latitude:35,
	  	  statusType:'alarmDevice'
	  	},
	  	{
	  	  longitude:120,
	  	  latitude:30,
	  	  statusType:'alarmDevice'
	  	},
	  	{
	  	  longitude:120,
	  	  latitude:30,
	  	  statusType:'alarmDevice'
	  	}
	  ]
	  // 清除先前标记点
      if (this.markerPointList.length !== 0) { // 定时获取点数据,更新前需先清掉原来点
        this.map.remove(this.markerPointList)
        this.markerPointList = []
      }
      // 绘制标记点
      this.deviceList.forEach(value => {
        if (value.longitude !== null && value.latitude !== null) {
          var markerPoint = new AMap.Marker({
            position: [value.longitude, value.latitude],
            offset: new AMap.Pixel(-15.1, -15.9) //点偏移量
          })
          // 创建标记点的div
          var markerDiv = document.createElement('div')
          // 设置标记点className,用于设置点的样式(动画)
          markerDiv.className = value.statusType
          // 点内部文字:找到相同经纬度点列表:sameLonLatPoint,列表长度即为该点显示个数
          var sameLonLatPoint = this.deviceList.filter((val) => {
            return val.longitude === value.longitude && val.latitude === value.latitude
          })
          // 创建标记点内容span
          var markerSpan = document.createElement('span')
          // 某位置点不唯一时展示个数
          markerSpan.innerText = sameLonLatPoint.length !== 1 ? sameLonLatPoint.length : ''
          // 将内容span放到标记点div
          markerDiv.appendChild(markerSpan)
		  // 将标记点div,设置为标记点内容
          markerPoint.setContent(markerDiv)
          // 标记点的list,清空点时用
          this.markerPointList.push(markerPoint)
          // 将标记点绘制到地图
          this.map.add(markerPoint)
        }
      })

标记点样式(此处只写了.alarmDevice的样式,其他的都一样了,只有颜色不同)

<style>
.alarmDevice{
  text-align:center;
  margin: 0 auto;
  width: 30px;
  height: 30px;
  background-color: #f13737;
  box-shadow:0px 0px 15px #f61212;
  border-radius: 50%;
  -webkit-animation-name: 'alarmDeviceBreath';/*动画属性名,也就是我们前面keyframes定义的动画名*/
  -webkit-animation-duration: 1s;/*动画持续时间*/
  -webkit-animation-timing-function: ease; /*动画频率,和transition-timing-function是一样的*/
  -webkit-animation-delay: 0s;/*动画延迟时间*/
  -webkit-animation-iteration-count: infinite;/*定义循环资料,infinite为无限次*/
  -webkit-animation-direction: alternate;/*定义动画方式*/
}
@keyframes alarmDeviceBreath{
  0% {margin-left: 0;margin-top: 0;width:30px;height:30px;box-shadow:0px 0px 15px #f61212;opacity: 1.2;}

  100% {margin-left: 5px;margin-top: 5px;width:20px;height:20px;box-shadow:0px 0px 10px #f61212;opacity: 0.6;}
}
.normalDevice span,
.offLineDevice span,
.alarmDevice span{
  line-height:30px;
  font-size:13px;
  -webkit-animation-name: 'breathSpan';
  -webkit-animation-duration: 1s;
  -webkit-animation-timing-function: ease;
  -webkit-animation-delay: 0s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-direction: alternate;
}
@keyframes breathSpan{
  0% {line-height:30px}

  100% {line-height:20px}
}
</style>
### starRC、LEF 和 DEF 文件的 EDA 工具使用教程 #### 关于 starRC 的使用说明 starRC 是由 Synopsys 开发的一款用于寄生参数提取 (PEX) 的工具,在 detail routing 完成之后被调用,以提供精确的电阻电容延迟分析数据[^2]。该工具能够处理复杂的多层互连结构支持多种工艺节。 对于 starRC 的具体操作指南,通常可以从官方文档获取最权威的信息。访问 Synopsys 官方网站的技术资源页面,可以找到最新的产品手册以及应用笔记等资料。此外,还可以通过在线帮助系统获得交互式的指导和支持服务。 #### LEF 和 DEF 文件格式解析及其在 Cadence 中的应用 LEF(Library Exchange Format)和 DEF(Design Exchange Format)是两种广泛应用于集成电路布局布线阶段的标准文件格式之一[^3]。前者主要用于描述标准单元库中的元件几何形状;后者则记录了整个芯片版图的设计信息,包括但不限于各个模块的位置关系、网络连接情况等重要细节。 当涉及到这些文件类型的编辑或读取时,Cadence 提供了一系列强大的平台级解决方案,比如 Virtuoso Layout Editor 就可以直接打开修改 LEF/DEF 格式的项目工程。为了更好地理解和运用这两种文件格式,建议参阅 Cadence 发布的相关培训材料或是参加其举办的专项课程学习活动。 ```bash # 示例命令:查看 LEF 或 DEF 文件内容 cat my_design.lef cat my_design.def ```
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值