2015-03-13 257 views
2

我正在開發一個地圖查看器項目,並在此之前使用了openlayers 2。現在我必須使用OpenLayers 3,地圖查看器應用程序應該支持許多不同的投影,因爲我有來自不同來源和投影的wms和wfs圖層。我找到了使用openlayers2和proj4js的例子。但是我找不到使用ol3和proj4js的明確例子。你有什麼建議?如何將OpenLayers 3與Proj4js一起使用

回答

2

這個例子演示瞭如何使用proj4js與OL3:http://openlayers.org/en/v3.3.0/examples/wms-image-custom-proj.html

基本上使用proj4js中的OpenLayers 3個透明地工作。您需要先扔在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'); 
+0

欲瞭解更多背景信息,您還可以閱讀http://ahocevar.net/2014/07/10/proj4js-2-2-x-with-ol3.html。 – ahocevar 2015-03-22 20:15:27

9

看來,有時候,使用的OpenLayers 3和proj4在角2時使用的WebPack一樣,我們需要明確告訴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"); 
    ... 
} 
+0

花了2天試圖找出爲什麼proj4.defs沒有設置我的自定義投影。關於放棄和隨機最後的搜索引導我在這裏,你知道什麼.... setProj4(...)是血腥的解決方案。沒有任何其他文檔提到這一點:-( – shawty 2017-08-20 22:20:16

+0

PS:你搖滾樂隊!!! – shawty 2017-08-20 22:20:45

+0

PPS:這是與當前版本的NP4在本次評論被寫入日期的版本,所以它仍然是相同的,即使從OL3 – shawty 2017-08-20 22:21:55

相關問題