`
jjxliu306
  • 浏览: 156009 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

百度地图扩展动画maker

    博客分类:
  • GIS
阅读更多

 

最近开始使用百度地图,需要在标记上添加一些闪烁的动画来做一些高亮或者明显提示给客户,因此基于css3来处理动画效果,用maker来处理标记,以下是简单记录。

 

1、扩展css3

测试css3代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3测试</title>
 
<style type="text/css">
	html{
		height: 100%;
		width: 100%;
		overflow: hidden;
		
	}
  
   .css_animation{  
        height:50px;  
        width:50px;  
        border-radius: 25px;  
        background: rgba(250, 0, 0, 0.9);  
        transform: scale(0);  
        animation: myfirst 3s;  
        animation-iteration-count: infinite;  
    }  
  
    @keyframes myfirst{  
        to{  
            transform: scale(2);  
            background: rgba(0, 0, 0, 0);  
        }  
    }  
</style>

</head>
<body>
	 <div id="c_test" class="css_animation"> </div>
		 
</body>
</html>

 

实际效果:



 

2、扩展js,提供渲染css3和maker的方法,ComplexCustomOverlay.js:

 
	function ComplexCustomOverlay(point , marker){
	 
		this._point = point;
		this._marker = marker;
    
	}
 
	ComplexCustomOverlay.prototype = new BMap.Overlay();
	ComplexCustomOverlay.prototype.initialize = function(map){
		this._map = map;
		var div = this._div = document.createElement("div");
		div.style.position = "absolute";  
		var arrow = this._arrow = document.createElement("div");
   
		arrow.style.position = "absolute"; 
		arrow.style.overflow = "hidden";
		div.appendChild(arrow);
		arrow.className="css_animation";  
    
		 if(this._marker ){
			map.addOverlay(this._marker );
		} 

		map.getPanes().labelPane.appendChild(div);
    
		return div;
	}
	ComplexCustomOverlay.prototype.draw = function(){
		var map = this._map;
		var pixel = map.pointToOverlayPixel(this._point);
		this._div.style.left = pixel.x - 25 + "px";
		this._div.style.top  = pixel.y - 25 + "px";
		 
		
	}
	
	ComplexCustomOverlay.prototype.setPosition = function(point) {
		this._point = point ;
		this.draw();
		if(this._marker)
			this._marker.setPosition(this._point);
		  
	}
	
	ComplexCustomOverlay.prototype.getPosition = function() {
		return this._point ;
		 
		  
	}
	
	

 

3、调用测试

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3_MARKER测试</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=39b5eb8bb91adccfa6487135d960a1e8"></script>
 <script type="text/javascript" src="ComplexCustomOverlay.js"></script>
<link rel="stylesheet" type="text/css" href="ComplexCustomOverlay.css">


<style type="text/css">
html {
	height: 100%;
	width: 100%;
	overflow: hidden;
}

body {
	margin: 0px;
	padding: 0px;
	border: 0px;
}

.map {
	width: 100%;
	height: 100%;
	background: #d5e6f5;
	position: absolute;
	float: left;
}
</style>

</head>
<body>
	 
	<div id="map" class="map"> </div>
		   
	<script type="text/javascript">
		
	
		var map;

		window.onload = function() {

			map = new BMap.Map('map'); // 创建Map实例

			map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

			var point = new BMap.Point(120, 30);//, 11
			map.centerAndZoom(point, 9);

			//三个marker
			var m1 = addMarker(120, 30);
			map.addOverlay(m1);

		};

		function addMarker(_lon, _lat) {
			var point = new BMap.Point(_lon, _lat);

			var size = new BMap.Size(48, 48);

			var marker = new BMap.Marker(point); // 创建标注    
			var plex = new ComplexCustomOverlay(point, marker); // 创建标注    

			return plex;

		}
	</script>

</body>
</html>

 

实际效果:



 

4、添加复杂效果,提供和其他maker的连线并动态移动:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS_MARKER2测试</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=39b5eb8bb91adccfa6487135d960a1e8"></script>
 <script type="text/javascript" src="ComplexCustomOverlay.js"></script>
<link rel="stylesheet" type="text/css" href="ComplexCustomOverlay.css">


<style type="text/css">
html {
	height: 100%;
	width: 100%;
	overflow: hidden;
}

body {
	margin: 0px;
	padding: 0px;
	border: 0px;
}

.map {
	width: 100%;
	height: 100%;
	background: #d5e6f5;
	position: absolute;
	float: left;
}
</style>

</head>
<body>
	
	 <div id="map" class="map"> </div>
		   
	<script type="text/javascript">
	
		var map;
		var index = 0;

		var add = 0.01;

		window.onload = function() {

			map = new BMap.Map('map'); // 创建Map实例

			map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

			var point = new BMap.Point(120, 30);//, 11
			map.centerAndZoom(point, 9);

			//三个marker
			var m1 = addMarker(120, 30);
			var m2 = addMarker(121, 30);
			var m3 = addMarker(120, 31);

			//无人机
			var m4 = addMarker(121, 31);
			

			map.addOverlay(m1);   
			map.addOverlay(m2);  
			map.addOverlay(m3);  
			map.addOverlay(m4);  

			var l1 = new BMap.Polyline([ new BMap.Point(120, 30),
					new BMap.Point(121, 31) ], {
				strokeColor : "blue",
				strokeWeight : 3,
				strokeOpacity : 0.8
			}); //创建折线
			var l2 = new BMap.Polyline([ new BMap.Point(121, 30),
					new BMap.Point(121, 31) ], {
				strokeColor : "blue",
				strokeWeight : 3,
				strokeOpacity : 0.8
			}); //创建折线
			var l3 = new BMap.Polyline([ new BMap.Point(120, 31),
					new BMap.Point(121, 31) ], {
				strokeColor : "blue",
				strokeWeight : 3,
				strokeOpacity : 0.8
			}); //创建折线
			map.addOverlay(l1); //增加折线
			map.addOverlay(l2); //增加折线 
			map.addOverlay(l3); //增加折线

			setInterval(function() {

				index = index + 1;

				var old_p = m4.getPosition();

				var lon = old_p.lng - add;
				var lat = old_p.lat - add;

				if (Math.abs(index) > 100) {
					add = add * -1;
					index = 0;
				}

				//修改线和位置
				var p = new BMap.Point(lon, lat);

				l1.setPositionAt(1, p);

				l2.setPositionAt(1, p);
				l3.setPositionAt(1, p);

				m4.setPosition(p);

			}, 100);

		};

		function addMarker(_lon, _lat) {
			var point = new BMap.Point(_lon, _lat);

			var size = new BMap.Size(48, 48);

			var marker = new BMap.Marker(point); // 创建标注    
			var plex = new ComplexCustomOverlay(point, marker); // 创建标注    

			return plex;

		}
	</script>

</body>
</html>

实际效果:



 

  • 大小: 26.1 KB
  • 大小: 221.7 KB
  • 大小: 1.1 MB
1
0
分享到:
评论

相关推荐

    百度地图marker动画的实现

    本教程将详细讲解如何利用百度地图API和CSS3来实现marker的动画效果。 首先,让我们理解什么是百度地图的marker。Marker是百度地图API中的一个对象,用于在地图上表示一个具体的地理位置。它通常由一个图标和一个...

    web端js百度地图自定义maker覆盖物_鼠标悬停展示行政区域高亮

    1. **百度地图API**:百度地图API是百度提供的一套JavaScript接口,允许开发者在其网页上嵌入地图,进行地图展示、定位、路径规划等操作。开发者需要申请密钥(AK)才能正常使用。 2. **地图行政区**:地图行政区是...

    百度地图加载海量marker卡顿问题

    在开发基于地图的应用时,尤其是使用百度地图API时,可能会遇到一个常见的问题——当需要在地图上显示大量标记(marker)时,地图加载会变得卡顿,用户体验显著下降。这个问题通常由于JavaScript处理大量DOM元素导致...

    百度地图添加marker

    百度地图添加自定义marker 详见:http://www.cnblogs.com/wangfengdange/p/5640867.html

    Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能

    在“Android百度地图SDK v3.0.0 (四) 引入离线地图功能”这一主题中,我们将探讨如何在Android应用程序中利用百度地图SDK实现离线地图功能,以便在没有网络连接的情况下也能展示地图。 离线地图在很多情况下非常...

    百度地图mapv 地图扩散波纹效果

    随着大数据、云计算、物联网的诞生、大量的设备数据、传感器数据、行为数据、日志数据、基础画像数据、运行数据等等都对传统的数据展现提出了新的要求 。随着前端技术的不断成熟,...本节课我们主要以百度地图结合map

    百度地图(webapi)移动地图,根据中心点定位

    百度地图Web API是一个强大的工具,它允许开发者集成地图功能到他们的网站或应用程序中,提供了丰富的地图展示、定位、搜索以及路线规划等功能。本教程将详细介绍如何利用百度地图Web API实现移动地图的中心定位、...

    百度地图去掉marker覆盖物或者去掉maker的label文字方法

    如下所示: var marker = new BMap.Marker(...); //方法1 map.removeOverlay(marker); //方法2 ...以上这篇百度地图去掉marker覆盖物或者去掉maker的label文字方法就是小编分享给大家的全部内容了

    百度地图MarkerClusterer卡顿问题

    在使用百度地图API进行开发时,特别是在处理大量Marker(标注)的时候,可能会遇到性能问题,导致地图操作卡顿。这主要是因为每个Marker都是一个独立的DOM元素,当数量过多时,浏览器需要处理的渲染任务就会变得繁重...

    完美解决百度地图聚合中的marker添加label后移动、放大缩小时label消失的问题

    在使用百度地图API进行开发时,经常会遇到一个问题:在实现地图上的marker聚合功能时,当marker数量过多,为了提高用户体验,我们会使用聚合技术将多个marker合并为一个大的标记点。然而,一旦添加了label(标记文字...

    百度地图API自定义ICON内容如文字数字字母

    百度地图API自定义ICON内容。如文字数字字母符号

    网站地图生成器SiteMapMaker

    SiteMapMaker是一款专为站长设计的工具,用于简化网站地图的创建过程。下面将详细介绍网站地图、生成器以及SiteMapMaker的相关知识。 1. 什么是网站地图(Sitemap)? 网站地图是一种XML文件,包含了网站的所有URL...

    gif maker GIF动画图片制作工具

    标题中的“gif maker GIF动画图片制作工具”是指一个专门用于创建、编辑和处理GIF动画的软件工具。GIF是一种常见的图像格式,特别是在互联网上,它支持动画效果,且文件大小相对较小,适合在网络上传输。 描述中...

    RPGMAKER怪物素材-爱给网_rpgmaker素材_没什么用_

    此压缩包显然提供了一组额外的怪物素材,能够帮助扩展RPG Maker的默认资源库。 2. **PNG格式**:PNG是一种无损压缩的图像文件格式,支持透明度,广泛用于游戏开发,因为它可以提供高质量的图像且文件大小相对较小。...

    rpg maker xp 素材

    RPG Maker XP 允许用户编辑和导入自己的动画,通过这些动态素材,你可以设计出独一无二的技能系统,为游戏增添更多的策略性和趣味性。 四、音效素材 音效在游戏中的作用不可忽视,它可以增强情感表达,提升游戏节奏...

    3D 文本动画制作 Aurora 3D Animation Maker 20.01.30 中文免费版.zip

    3D 文本动画制作 Aurora 3D Animation Maker 中文版3D 文本动画制作 Aurora 3D Animation Maker 中文版 Aurora 3D Animation Maker可以发挥创造性的想象力,轻松制作令人惊叹的3D交互,视频和多媒体程序!快速设计...

    ios百度地图自定义calloutView

    在iOS开发中,集成百度地图并实现自定义的calloutView是一项常见的需求,尤其是在提供更加个性化的用户体验时。本文将详细讲解如何在iOS项目中利用百度地图SDK版本6.1来实现这一功能,并且会涉及Xcode 4.6.1的开发...

    SiteMapMaker网站地图生成器

    SiteMapMaker网站地图生成器 很多人的网站在Google,百度,雅虎等各大搜索引擎收录非常少,而且长期收录不增长或者增长很慢。 这主要是因为,搜索引擎没有足够的信息爬行到这个网站的每一个页面。这大大影响了搜索...

    百度地图 聚合点 优化源码

    关于开发中基于百度地图做开发,添加maker标记点,官方提供的源码在pc端添加上千个点,页面拖动会出现卡顿,页面加载也会很慢,优化过的源码,本人亲测上万marker也还可以。

Global site tag (gtag.js) - Google Analytics