欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度地图封装实现拉框效果

程序员文章站 2022-06-04 15:24:29
...

最近要做一个百度地图的拉框效果,仔细一查,百度地图竟然已经封装好了,兴奋了一下,问题来了,百度实现的是拉框搜索,而我要做的却不是这样的功能,唉,又看不懂百度的源码,只好发挥一下自己的聪明才智自己封装一下。

拉框.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>拉框</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script>
</head>
<body>
<input type="button" onclick="openbut()" value="开启"/>
<input type="button" onclick="closebut()" value="关闭"/>
<div style="width:1200px;height:570px;border:1px solid gray" id="container"></div>
</body>
</html>
<script type="text/javascript">
var map = new BMap.Map("container");      //设置卫星图为底图
var point1 = new BMap.Point(117.263865,34.151257);
map.centerAndZoom(point1,15);//设定地图的中心点和坐标并将地图显示在地图容器中
map.addControl(new BMap.NavigationControl());      //为地图添加鱼骨  
map.enableScrollWheelZoom();//启用地图滚轮放大缩
var dflag="0";
var sflag="0";
var a1="";
var b1="";
var a2="";
var b2="";
var polygon="";
function openbut(){
	dflag="1";
}
map.addEventListener("click", function(e){ 
	if(sflag=="1"){
		dflag="0";
		return;
	}	  
	if(dflag=="1"){
		a1=e.point.lng;
		b1=e.point.lat;
		beginMove();
	} 
	 
}); 


function beginMove(){
	map.addEventListener("mousemove", function(e){ 
		if(dflag=="1"){
			if(polygon!=""){
				map.removeOverlay(polygon);
				polygon="";
			}
			a2=e.point.lng;
			b2=e.point.lat;
			polygon = new BMap.Polygon([
			  new BMap.Point(a1,b1),
			  new BMap.Point(a2,b1),
			  new BMap.Point(a2,b2),
			  new BMap.Point(a1,b2)
			], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5});
			map.addOverlay(polygon);
			sflag="1";
		} 
	});	
}
</script>

 

 

 

 

相关标签: 百度地图 拉框