背景
最近做了一个项目,需要用户在缩放百度地图的时候,能根据地图缩放级别以及地图中心坐标,动态更新地图上的标注点(比如根据地图缩放级别以及地图中心坐标动态获取手机屏幕视界范围内的共享单车位置),这时候就需要根据地图中心坐标点以及通过地图缩放级别获取比例尺,来计算手机屏幕视界的经纬度范围,从而获取当前范围内的共享单车位置
百度地图缩放级别与比例尺对应数值
百度地图缩放级别从19~1,共分为19级,级别越大,范围越小:
[19级,18级,17级,16级,15级,14级,13级,12级,11级,10级,9级,8级,7级,6级,5级,4级,3级,2级,1级]
其分别对应的比例尺为:
[1:20米(简称20米,后同),50米,100米,200米,500米,1公里,2公里,5公里,10公里,20公里,25公里,50公里,100公里,200公里,500公里,1000公里,2000公里,5000公里,10000公里]
// 根据地图缩放比例获取当前地图比例尺
const getMapScale = (zoom: number): number => {
let scale = 0;
switch (zoom) {
case 1:
scale = 10000000;
break;
case 2:
scale = 5000000;
break;
case 3:
scale = 2000000;
break;
case 4:
scale = 1000000;
break;
case 5:
scale = 500000;
break;
case 6:
scale = 200000;
break;
case 7:
scale = 100000;
break;
case 8:
scale = 50000;
break;
case 9:
scale = 25000;
break;
case 10:
scale = 20000;
break;
case 11:
scale = 10000;
break;
case 12:
scale = 5000;
break;
case 13:
scale = 2000;
break;
case 14:
scale = 1000;
break;
case 15:
scale = 500;
break;
case 16:
scale = 200;
break;
case 17:
scale = 100;
break;
case 18:
scale = 50;
break;
case 19:
scale = 20;
break;
default:
scale = 0;
break;
}
return scale;
};
地图展示
具体可以参考地图http://api.map.baidu.com/lbsapi/getpoint/index.html,来看看缩放比例与比例尺的关系: