我正在使用openlayers 3从mapserver服务器渲染地图。我需要使用Gauss Boaga投影,所以我定义了:
var gbProjection = new ol.proj.Projection({
code: 'EPSG:3003',
extent: [1290650.93, 4192956.42, 2226749.10, 5261004.57],
units: 'm'
});
ol.proj.addProjection(gbProjection);
var mymap = new ol.Map({
controls: ol.control.defaults().extend(
[new ol.control.FullScreen(), new ol.control.ScaleLine({
units: 'metric'
})]),
layers: layers,
units: 'm',
target: 'mymap',
view: new ol.View({
projection: gbProjection,
center: [gbest, gbnord],
zoom: 9
})
});
我在“视图”字段中添加了投影。一切都很好,我能够将我的点放在地图上的正确位置。唯一的问题是我在ScaleLine中得到了错误的值,看起来实际比例乘以100000(我得到,比如50000 Km而不是500 m)。我无法弄清楚如何解决这个问题。
答案 0 :(得分:0)
在项目中包含proj4js库:
https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.15/proj4.js
然后通过添加以下内容让ol3了解EPSG:3003:
Proj4js.defs["EPSG:3003"] = "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +units=m +no_defs";
然后执行以下操作来设置范围并获得对投影的引用。
//get a reference of your new projection
var gbProjection = ol.proj.get('EPSG:3003');
//set the extent
gbProjection.setExtent( [1290650.93, 4192956.42, 2226749.10, 5261004.57]);
可以在此处找到投影定义 http://spatialreference.org/ref/epsg/monte-mario-italy-zone-1/proj4js/
使用这种方式,您的比例应该很好,您也可以进行任何转换。