2011-05-20 124 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配置問題。

看起來您已將「意大利」圖層設置爲預編譯平鋪圖層,這是否正確?而且看起來像某個地方的設置決定了請求中的分辨率與圖層中預設分辨率的接近程度。你能嘗試其他的程度嗎?也許「縮小」一點?以便您的請求更接近圖層分辨率?