百度地图 动态矢量圆 BMap Circle

        PAGE.markerArr = [];
        // 调用该方法后创建标注
		function addMapDeviceMarker (deviceObj) {
			// 创建地图点
			var pt = new BMap.Point(deviceObj.longitude, deviceObj.latitude);
			// 创建自定义图标对象
			let imgUrl = './lib/warning/'+ deviceObj.a5+ '-' +deviceObj.a6+'.png';
			var myIcon = new BMap.Icon(imgUrl, new BMap.Size(43, 55));
			myIcon.setImageSize(new BMap.Size(35,35))   //设置图片大小
			let markerNew = new BMap.Marker(pt,{icon:myIcon});  // 创建标注
			//let markerNew = new BMap.Marker(pt);  // 创建标注
			markerNew.addEventListener("click", function (e) {
				if(PAGE.markerPresent != null){
					if(markerNew.gd.childNodes.length == 2){
						deleteScopeOneID();
						return;
					}
					deleteScopeOneID();
				}
				if(PAGE.markerPresent == null){
					PAGE.markerPresent = markerNew;
					createCircle(deviceObj);
                    let divElement3 = document.createElement('div');
					//divElement3.className = 'scopeOne';
					divElement3.id = "scopeOneID";
					markerNew.gd.appendChild(divElement3);
				}
			});
			PAGE.bmap.addOverlay(markerNew);
			PAGE.markerArr.push(markerNew);
			CheckImgExists(imgUrl,markerNew,deviceObj.a6);//判断图片404
		}
        //删除动态圆
		function deleteScopeOneID(){
			PAGE.markerPresent = null;
			var divScope=document.getElementById("scopeOneID")
			if(divScope){
				divScope.parentNode.removeChild(divScope);
			}
			clearTimeout(PAGE.circleInterval);
			PAGE.circleArr = [];
			PAGE.bmap.removeOverlay(PAGE.circlePresent);
			PAGE.circlePresent = null;
			$("#page_warning_info").gis_hide();
		}
        //创建动态范围圆
		function createCircle(deviceObj){
			for(i=1;i<11;i++){
				var circleA = new BMap.Circle(new BMap.Point(deviceObj.longitude, deviceObj.latitude), deviceObj.range * 100 * i, {
					strokeColor: '#f5f10963',
					fillColor: '#f5f10963',
					strokeWeight: 2,
					strokeOpacity: 0.5
				});
				PAGE.circleArr.push(circleA);
			}
			//定时器
			sleepDelCricle(0);
			PAGE.circleInterval = setInterval("addNewCircle()", 1500);
			
		}
        //定时器方法,轮询创建动态源
		function addNewCircle(){
			sleepDelCricle(0);
		}

		function sleepDelCricle(sum) {
			let circle = PAGE.circleArr[sum];
			PAGE.bmap.addOverlay(circle);
			sum++;
			setTimeout(function(){
				PAGE.bmap.removeOverlay(circle);
				if(sum < 10){
					sleepDelCricle(sum);
				}
			}, 80);
		}

思路逻辑,

一、通过Bmap API创建  矢量圆,添加背景 ew BMap.Circle new BMap.Point
二、创建十个不同大小同心圆,放入数组中存储

三、通过定时器轮询按顺序显示十个不同的圆。(不能直接用for循环,因为js代码顺序异步显示问题达不到效果。)

矢量图圆半径单位是米(m)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值