1、比例尺转分辨率
//比例尺改变事件监听
Bus.$on("changeScale", val => {
//默认dpi
const DEFAULT_DPI = 25.4 / 0.28;
//每米多少英寸
const inchesPerMeter = 1000 / 25.4;
var readyToChangeResolution = 0;
//如果是度分秒的话需要转换为米
if(self.map.getView().getProjection().getUnits() != 'metric'){
readyToChangeResolution = 1/(val*self.map.getView().getProjection().getMetersPerUnit() * inchesPerMeter * DEFAULT_DPI);
}else{
readyToChangeResolution = 1 / (val * inchesPerMeter * DEFAULT_DPI);
}
this.changeScale(readyToChangeResolution);
});
2、分辨率转比例尺
// 监听分辨率变化,通过dpi和像素关系(比例尺=dpi/0.0254*分辨率)输出比例尺
this.map.getView().on('change:resolution', function(){
//默认dpi
const DEFAULT_DPI = 25.4 / 0.28;
//每米多少英寸
const inchesPerMeter = 1000 / 25.4;
var currentScale = 1;
//如果是度分秒的话需要转换为米
if(self.map.getView().getProjection().getUnits() != 'metric'){
currentScale = self.map.getView().getResolution()*self.map.getView().getProjection().getMetersPerUnit() * inchesPerMeter * DEFAULT_DPI;
}else{
currentScale = self.map.getView().getResolution() * inchesPerMeter * DEFAULT_DPI;
}
const mapScale =
'1 : ' + Math.round(currentScale).toLocaleString();
console.log(mapScale)
});
*注意事项:
上述
DEFAULT_DPI
来自openlayers(6.x)源码中的比例尺 早期openlayers版本中的dpi可能有所不同,详情可查询所使用openlayers版本的源码进行确认
版权声明:本文为Yuanben_wuxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。