百度地图添加自定义图标标注以及自定义动画效果

上次写的是添加自定义图标,但是用的是添加自定义覆盖物方法,结果不支持点聚合,这次写的还是添加自定义图标,但是可以支持点聚合,同时还加上了自定义动画效果。

1、添加自定义图标标注

代码如下,vue里记得把图标扔到static文件夹中或者图片服务器上,不然请求不到。

// 调用该方法后创建标注
addMapDeviceMarker (deviceObj) {
      // 创建地图点
      var pt = new BMap.Point(deviceObj.lat, deviceObj.lng);
      // 创建自定义图标对象
      var myIcon = new BMap.Icon('../../../static/img/patrol.png', new BMap.Size(43, 55));
      var marker = new BMap.Marker(pt,{icon:myIcon});  // 创建标注
      this.map.addOverlay(marker);
      deviceObj.mapMarker = marker;
}

2、添加自定义动画效果

2.1、标注对象marker的构成

打印marker可以发现marker对象有以下属性
在这里插入图片描述
而其中的Yc就是标注所在的容器,黄色的就是Yc,里面的img就是自定义图标的容器,Yc外面还包着一层父元素父元素,这就是整个标注所在的容器了。在这里插入图片描述

2.2、自定义动画效果实现过程

首先给marker标注添加一段js代码.我采取的方法是给Yc一个class,这个class内部的两个容器有动画效果,再在Yc内部添加两个指定class的容器。本来想用before和after选择器的,但是没出现效果,就改成这种方式来实现了。

 // 添加两个容器,在这两个容器上增加动画效果
 let divElement = document.createElement('div');
 divElement.className = 'before';
 let divElement2 = document.createElement('div');
 divElement2.className = 'after';
 marker.Yc.innerHtml = marker.Yc.childNodes[0];
 marker.Yc.appendChild(divElement);
 marker.Yc.appendChild(divElement2);
 marker.Yc.className = '';
 marker.Yc.className = 'dot';
 marker.Yc.style.overflow = '';
 marker.Yc.firstChild.style.position = 'relative';
 marker.Yc.firstChild.style.zIndex = '5';

css代码,这是一个由内向外逐渐扩散的动画效果。

.dot{
  display: block;
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 50;
}
.dot:hover{
  z-index: 100;
}

/* 内环  */
.dot >.before {
  content: '';
	position: absolute;
	width: 20px;
	height: 20px;
	left: 10px;
	top: 40px;
  border: 2px solid #4dbbda;
  border-radius: 100%;
  background-color: #4dbbda;
  z-index: 2;
  animation: color1 1s ease-out;
  animation-iteration-count: infinite;
}
/* 产生动画(向外扩散变大)的圆圈  */
.dot >.after{
  content: '';
  position: absolute;
  width: 40px;
  height: 40px;
  top: 30px;
  left: -1px;
  border: 3px solid #4dbbda;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  border-radius: 30px;
  z-index: 1;
  opacity: 0;
  animation: color2 1s ease-out;
  animation-iteration-count: infinite;
}
// 动画效果
@keyframes color1 {
	0% {
		transform: scale(0.1);
    opacity: 0.5;
    border-color: #1da5ce;
	}
	25% {
		transform: scale(0.5);
    opacity: 0.5;
    border-color: #0b93d6;
	}
	50% {
		transform: scale(1);
    opacity: 0.5;
    border-color: #13b5e5;
	}
	75% {
    transform: scale(1);
    opacity: 0;
	}
	100% {
    transform: scale(1);
    opacity: 0;
	}
}
@keyframes color2 {
	0% {
		transform: scale(0.5);
    opacity: 0;
	}
	25% {
		transform: scale(0.5);
    opacity: 0;
  }
  49% {
		-webkit-transform: scale(0.5);
		opacity: 0;
	}
	50% {
		transform: scale(0.5);
    opacity: 0.5;
    border-color: #4b9ec7;
	}
	75% {
		transform: scale(0.8);
    opacity: 0.5;
    border-color: #4cb5d6;
	}
	100% {
		transform: scale(1);
    opacity: 0.5;
    border-color: #9cddeb;
	}
}

.dot >div{
  z-index: 3;
  top: 0;
  left: 0;
}

操作后地图上的标注元素内容如图
在这里插入图片描述

2.3、最终实现效果

效果是一个圆圈从图标底部逐渐扩散,逐渐变淡、并由实心变成空心。不会gif,就用多图来展示了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
使用UniGUI调用百度地图添加标注点并变更标注图标,可以按照以下步骤进行: 1. 首先,确保已经在UniGUI项目中添加了TUniWebBrowser组件,该组件可以用来加载百度地图。 2. 在UniGUI的项目代码中,找到需要加载百度地图的位置,并在相应的事件或方法中执行以下代码: ```delphi UniWebBrowser1.ViewContent := '<html>' + '<head><script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=your_ak"></script></head>' + '<body>' + '<div id="map" style="width:100%; height:100%;"></div>' + '<script type="text/javascript">' + 'var map = new BMap.Map("map");' + 'var point = new BMap.Point(116.404, 39.915);' + 'map.centerAndZoom(point, 15);' + 'var marker = new BMap.Marker(point);' + 'map.addOverlay(marker);' + '</script>' + '</body></html>'; ``` 这段代码中,`your_ak`需要替换为自己申请的百度地图AK。 3. 上述代码中,`BMap.Point(116.404, 39.915)`表示标注点的经纬度坐标,可以根据需要进行修改。 4. 如果需要更改标注图标,可以在`BMap.Marker(point)`之后添加以下代码,将默认图标替换为自定义图标: ```delphi 'var myIcon = new BMap.Icon("custom_icon_url", new BMap.Size(30, 30));' + 'marker.setIcon(myIcon);' ``` 其中`custom_icon_url`需要替换为你自定义图标的地址。 5. 最后,注意在UniGUI程序中设置相应的权限,确保百度地图可以正常加载和使用。 以上就是使用UniGUI调用百度地图添加标注点并变更标注图标的简要步骤。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值