如何将OpenLayers 3与Proj4js一起使用

时间:2015-03-13 07:56:32

标签: openlayers gis projection openlayers-3 proj4js

我正在处理地图查看器项目,并在此之前使用了openlayers 2。现在我必须使用OpenLayers 3,地图查看器应该支持许多不同的投影,因为我有来自不同来源和投影的wms和wfs图层。我找到了使用openlayers2和proj4js的示例。但我无法找到使用ol3和proj4js的明确示例。你的建议是什么?

2 个答案:

答案 0 :(得分:10)

似乎有时,就像使用webpack在Angular 2中使用OpenLayers 3和proj4时,需要明确告诉OL3在哪里找到它:

import * as proj4 from "proj4";
import * as ol from "openlayers";
...
ol.proj.setProj4(proj4);

如果一切正常,那么在定义投影后,ol.proj.get应该返回它:

proj4.defs("EPSG:28992", "...");
if (!ol.proj.get('EPSG:28992')) {
    console.error("Failed to register projection in OpenLayers");
    ...
}

答案 1 :(得分:3)

此示例演示了如何将proj4js与ol3:http://openlayers.org/en/v3.3.0/examples/wms-image-custom-proj.html

一起使用

基本上在OpenLayers 3中使用proj4js可以透明地工作。您需要先在proj4js中抛出srs定义,然后立即使用投影:

proj4.defs("EPSG:21781","+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +towgs84=660.077,13.551,369.344,2.484,1.783,2.939,5.66 +units=m +no_defs");
var zurich = ol.proj.transform([8.55, 47.366667], 'EPSG:4326', 'EPSG:21781');