百度地图动态的设置中心坐标和缩放级别

本文介绍了一种根据标注点坐标动态计算地图中心坐标及缩放级别的方法,通过遍历坐标点找到最大最小经纬度并据此计算中心点与合适的缩放级别。

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

问题描述:有些时候地图的中心坐标,以及缩放级别要根据标注点来确定,所以有时候要根据标注点坐标,动态的设置中心坐标和缩放级别

代码如下:

//根据原始数据计算中心坐标和缩放级别,并为地图设置中心坐标和缩放级别。  
   function setZoom(points){  
       if(points.length>0){  
           var maxLng = points[0].lng; 
           var minLng = points[0].lng;  
           var maxLat = points[0].lat;  
           var minLat = points[0].lat;  
           var res;  
           for (var i = points.length - 1; i >= 0; i--) {  
               res = points[i];  
               if(res.lng > maxLng) maxLng =res.lng;  
               if(res.lng < minLng) minLng =res.lng;  
               if(res.lat > maxLat) maxLat =res.lat;  
               if(res.lat < minLat) minLat =res.lat;  
           };  
           var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;  
           var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;  
           var zoom = getZoom(maxLng, minLng, maxLat, minLat);  
           map.centerAndZoom(new BMap.Point(cenLng,cenLat), zoom);    
       }else{  
           //没有坐标,显示全中国  
           map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);    
       };   
   }
   //算出中心点坐标
   function getZoom (maxLng, minLng, maxLat, minLat) {  
	    var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"];//级别18到3。  
	    var pointA = new BMap.Point(maxLng,maxLat);  // 创建点坐标A  
	    var pointB = new BMap.Point(minLng,minLat);  // 创建点坐标B  
	    var distance = map.getDistance(pointA,pointB).toFixed(1);  //获取两点距离,保留小数点后两位  
	    for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {  
	        if(zoom[i] - distance > 0){  
	            return 18-i+3;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。  
	        }  
	    };  
	}

说明:其中points是一个数组,内容的格式如下

	   var points = [{"lng":y1,"lat":x1},  
		                 {"lng":y2,"lat":x2}  
		                 ]; 
其中y1,x1,以及y2,x2是你具体的经纬度信息


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值