0

我正在使用全新安装的 Ubuntu 的 Mapnik,这是我的地图配置:

        map = new OpenLayers.Map ("map", {
            controls:[
                new OpenLayers.Control.Navigation(),
                new OpenLayers.Control.ScaleLine({geodesic: true})],
            maxExtent: new OpenLayers.Bounds(13.543,45.932,13.553,45.939),
            maxResolution: 156543.0339,
            numZoomLevels: 19,
            units: 'm',
            projection: new OpenLayers.Projection("EPSG:900913"),
            displayProjection: new OpenLayers.Projection("EPSG:4326")
        } );

此配置工作正常(即使我不确定它是否使用 maxExtent)。如果我添加restrictedExtent:new OpenLayers.Bounds(13.543,45.932,13.553,45.939),映射作为 Bounds 构造函数的参数是(0,0,0,0)。如果没有此选项,我的地图将正确地以我的“LatLon”定义为中心。

我怎样才能解决这个问题?

4

1 回答 1

2

尝试将您的边界从 EPSG:4326 转换为 EPSG:3857(与 EPSG:900913 相同)投影:

var map = new OpenLayers.Map ("map", {
    // ...
    restrictedExtent: new OpenLayers.Bounds(13.543, 45.932, 13.553, 45.939).transform(
        new OpenLayers.Projection("EPSG:4326")
        new OpenLayers.Projection("EPSG:900913")
    )
    // ...
};

顺便说一句,我个人之前创建了所有这些投影对象,所以在剩余的代码中,我所有的变换看起来像

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

// ...
something.transform(EPSG4326, EPSG3857);
于 2013-10-17T00:10:11.930 回答