比例尺分辨率转换(openlayers)

  • Post author:
  • Post category:其他


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版本的源码进行确认

参考:

Openlayers中的比例尺(scale)和分辨率(resolution) – GIS开发者



版权声明:本文为Yuanben_wuxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。