2

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

4

2 回答 2

11

有时,就像在使用 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");
    ...
}
于 2017-01-16T10:14:14.750 回答
3

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

基本上在 OpenLayers 3 中使用 proj4js 可以透明地工作。需要先把 srs 定义扔到 proj4js 上,然后就可以马上使用投影了:

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');
于 2015-03-17T13:06:56.510 回答