我正在使用全新安装的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”定义为中心。
我该如何解决这个问题?
答案 0 :(得分: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);