首页 文章

扭曲的WMS层(GeoServer / OpenLayers)

提问于
浏览
0

我在2天前问了同样的问题,但由于某种原因我仍然没有工作(图层预览中没有图片) . GeoSever中的WMS层是这样的:
enter image description here

它在浏览器中被扭曲:
enter image description here

这是我的代码:

<script src="http://cdnjs.cloudflare.com/ajax/libs/proj4js/1.1.0/proj4js-compressed.js"></script>
    <script defer="defer" type="text/javascript">
        var lon = 13.2;
        var lat = 55.7;
        var zoom = 10;

        var bounds = new OpenLayers.Bounds(
                1460205.410400961, 7494354.925820643,
                1476383.1814075545, 7510328.218502053
            );

        var options = {
                controls: [],
                maxExtent: bounds,
                maxResolution: 63.194417994505784,
                projection: "EPSG:3857",
                units: 'm'
                };


       var map, vectors, controls; 

       function init(){

        var map = new OpenLayers.Map({
        div: "map",
        allOverlays: true
        });


        var build1_wms = new OpenLayers.Layer.WMS( "Building",
                "http://localhost:8090/geoserver/wms/wsNYCRoad", {
                layers: 'bygg_lant_p',
                styles: '',      
                transparent:true,
                tiled: 'ture',
                tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
            },
            {
                buffer: 0,
                displayOutsideMaxExtent: true,
                isBaseLayer: true,
                yx : {'EPSG:3857' : false}
            });

            map.addLayers([build1_wms]);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.addControl(new OpenLayers.Control.MousePosition());

我也尝试添加这个,但它没有帮助:

var EPSG4326 = new OpenLayers.Projection("EPSG:4326");
var EPSG3857 = new OpenLayers.Projection("EPSG:3857 ");

请帮我弄清楚如何解决问题!

1 回答

  • 0

    我解决了这个问题:

    var map = new OpenLayers.Map({
                    maxScale: 1/5000,
                    minScale: 1/500000,
                    projection: new OpenLayers.Projection("EPSG:3857"),
                    displayProjection: new OpenLayers.Projection("EPSG:4326"),
                    div: "map",
            allOverlays: true
            });
    .
    .
    .
     var proj = new OpenLayers.Projection("EPSG:4326");
                var lonlat = new OpenLayers.LonLat(1468582.90048, 7501836.76895);
                lonlat.transform(proj, map.getProjectionObject());
                map.setCenter(lonlat, 5);
    

相关问题