2011-05-20 125 views
1

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

这是我在函数中使用的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); 
} 

这是请求的GeoServer:

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 

这是我从GeoServer的得到响应:

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

回答

0

尝试调整地图的resolution

+0

这是要做到这一点的文档:http://trac.osgeo.org/openlayers/wiki/SettingZoomLevels – tonio 2011-05-23 10:11:40

+0

我已经检查了OpenLayers API,但我无法理解如何确定正确的分辨率值。我认为应该有一个公式... – 2011-05-24 08:45:06

0

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

从我可以收集和猜测,这不是一个OpenLayers问题,而是一个Geoserver配置问题。

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