OpenLayers如何计算边界框坐标?

时间:2011-05-20 15:36:08

标签: openlayers geoserver

我正在尝试通过GeoServer的WMS使用OpenLayers显示地图。我想知道OpenLayers如何计算BBOX坐标以使用js正确设置它们并避免发布的错误响应。我对OpenStreetMap和GoogleStreetMap没有这个问题。

这是我在我的函数中使用的JavaScript代码:

function myfunc(display, url){
    var params = {};
    params.layers = 'Italy';
    params.format = 'image/jpeg';
    params.transparent = true;
    var options = {};
    options.projection='EPSG:900913';
    options.displayProjection="EPSG:4326";
    options.maxExtent= new OpenLayers.Bounds(-20037508.34, 20037508.34,20037508.34,20037508.34);
    options.isBaseLayer = true;
    return new OpenLayers.Layer.WMS(display, url, params, options);
}

这是对地理服务器的请求:

http://mydomain:myport/geoserver/gwc/service/wms?LAYERS=Italy&FORMAT=image%2Fpng&TRANSPARENT=true&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A900913&BBOX=1384430.175625,5152466.50375,1384430.87875,5152467.206875&WIDTH=256&HEIGHT=256

这是我从地理服务器获得的响应:

  

400:分辨率(0.00274658203125)是   不是5.0%的最近网格   分辨率(0.0023326729820109904)

2 个答案:

答案 0 :(得分:0)

尝试调整地图的resolution

答案 1 :(得分:0)

我不是Geoserver的专家,所以如果这是微不足道的话,请道歉。

我可以收集并猜测,这不是OpenLayers问题,而是Geoserver配置问题。

看起来你已经将“意大利”图层设置为预编译的平铺图层,这是正确的吗?并且看起来某个地方有一个设置可以确定请求中的分辨率与图层中预设分辨率的接近程度。你能尝试一下吗?也许“缩小”一点?这样您的请求更接近图层分辨率?