首页 / 浏览问题 / WebGIS / 问题详情
iclient-openlayers 给出左上到右下的实际距离计算缩放值
9EXP 2023年06月20日
  1. 给出一张地图 4326
  2. 现在指定左上角到右下角的真实空间中的实际距离 km
  3. 以当前地图中心为中心,缩放到 2 中给的距离值

这个怎么实现? 还需要反算

  1. 地图 4326
  2. 给一个Zoom值或者Resolution值
  3. 计算左上角到右下角实际距离 km

我第一反应是通过resolution,然后英寸来计算

问题关闭原因: 解决了

1个回答

您好,请问具体是要实现什么效果呢?正常地图缩放是鼠标滚轮滑动地图实现的,如果要设置地图显示级别,使用var view = map.getView(); view.setZoom(defaultZoom);
1,865EXP 2023年06月20日
我们现在是给出一个slider,这个slider是距离,然后缩放地图到这个slider显示的距离

缩放级别可以用比例尺(scale)或者分辨率(resolution)表示。

比例尺——屏幕上1米代表多少地图坐标单位;分辨率——屏幕上一个像素代表多少地图坐标单位。两者的转换关系是:scale = resolution * 72 * 39.3701(1米=39.3701英寸,1英寸=72像素)

根据slider显示的距离,计算得到比例尺,然后利用比例尺和分辨率的关系换算得到地图缩放级别。

参考:https://blog.csdn.net/hi_kevin/article/details/34452601

https://openlayers.org/en/latest/examples/print-to-scale.html

这样做的话,又搞不清屏幕的尺寸,搞不到比例尺来
现在问题就是如何才能搞来比例尺这个值
毕竟屏幕大小会变
还是有用的,虽然有点误差,但是误差不多了。

Resolution: 分辨率——屏幕上一个像素代表多少地图坐标单位。

而4326地图坐标单位是°

所以可以通过计算这段距离跨了多少经度,然后除以map.size()[0]

只不过这样计算得到的就是水平方向的距离了,而不是左上角到右下角的距离了,我只能这么搞了,尽力了……
好的,这边给的思路也是这样了。
...