Openlayers 3:更改地图范围时出现的问题

苏拉·普拉贾帕蒂

我在更改openlayers 3代码中的地图范围时遇到问题。我使用EPSG:4326作为投影格式,并且打算将边界更改为“ bounds”变量。我在用着

map.getView().fitExtent(bounds, map.getSize());

用于更改地图的范围。问题是,当我使用以下方法查询地图范围时,首先提供的边界值是[76.9501571655273,76.9501571655273,78.5841217041016,78.5841217041016],然后将地图的范围调整为该值

map.getView().calculateExtent(map.getSize());

我得到[76.39384841918945、76.39384841918945、79.14043045043945、79.14043045043945]作为输出。我感觉这可能是一个投影问题,但是我无法弄清楚我做错了什么。有人可以让我知道我在做什么错吗?

这是完整代码(我已删除了不必要的代码以使其更具可读性):

<!doctype html>
<html lang="en">
 <head>
  <script src="http://openlayers.org/en/v3.5.0/build/ol-debug.js"></script>
  <title>OpenLayers map preview</title>
 </head>
 <body>
  <div id="map" style="width: 500px; height: 500px;"></div>
 <script type="text/javascript">

  var format = 'image/png';
  var bounds = [76.9501571655273, 76.9501571655273,
                78.5841217041016, 78.5841217041016];

  var untiled = new ol.layer.Image({
    source: new ol.source.ImageWMS({
      ratio: 1,
      url: 'http://localhost:9000/geoserver/TargetWorkspace/wms',
      params: {'FORMAT': format,
               'VERSION': '1.1.1',  
            LAYERS: 'TargetWorkspace:hyderbadtargets',
            STYLES: '',
      }
    })
  });

  var projection1 = new ol.proj.Projection({
      code: 'EPSG:4326',
      units: 'degrees',
      axisOrientation: 'neu'
  });
  var map = new ol.Map({
    controls: ol.control.defaults({
      attribution: false
    }),
    target: 'map',
    layers: [
      untiled
    ],
    view: new ol.View({
        projection: projection1,
        center: [77.7671394348, 77.7671394348],
        zoom: 0
    })
  });

  var ext = map.getView().calculateExtent(map.getSize());

  console.log("Map Bound Before: " +  ext[0] + " " + ext[1] + " "+ ext[2] + " "+ ext[3] + " ");

  map.getView().fitExtent(bounds, map.getSize());

  var ext2 = map.getView().calculateExtent(map.getSize());

  console.log("Map Bound After: " +  ext2[0] + " " + ext2[1] + " "+ ext2[2] + " "+ ext2[3] + " ");

</script>
</body>
</html>

谢谢你,

苏拉卜

法韦罗

WMS提供具有预定义比例/分辨率的图像,例如,缩放8可以具有1222.99245252分辨率和1:3000000比例。如何使离散缩放值适应您提供的边界?OL3为您找到最佳缩放级别,该级别的绑定坐标接近您想要的范围。

此外,我在您的代码中注意到,您使用以下方式重新定义了投影EPSG:4386:new ol.proj.Projection({......但是,OL3已在库本身中包含此投影。更好地使用:new ol.proj.get('EPSG:4326');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章