比例尺分辨率转换(openlayers)

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开发者

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers中,比例尺是通过计算视图中心点的分辨率来得到的。在构造ol.control.ScaleLine对象时,会动态创建一个包含比例尺信息的div元素。比例尺的具体显示内容和样式可以通过设置相应的CSS来控制。在OpenLayers地图中添加比例尺控件时,需要在HTML页面中创建一个用于作为比例尺容器的div标签,并将其与地图容器一同放置在body中。通过合理设置比例尺容器的样式,可以使比例尺在地图上显示为期望的位置和样式。根据地图视图的设置和当前地图缩放级别,OpenLayers会自动计算并更新比例尺的显示值和样式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [openlayers比例尺的计算原理](https://blog.csdn.net/u013240519/article/details/84136793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Openlayers学习之地图比例尺控件](https://download.csdn.net/download/weixin_38660051/14663633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值