Как использовать OpenLayers 3 с Proj4js
Я работаю над проектом вьюера карт и использовал openlayers 2 до этого. Теперь я должен использовать OpenLayers 3, и приложение для просмотра карт должно поддерживать много разных проекций, потому что у меня есть слои wms и wfs из разных источников и проекций. Я нашел примеры, которые используют openlayers2 и proj4js. Но я не смог найти явный пример использования ol3 и proj4js. Что вы предлагаете?
2 ответа
Кажется, что иногда, как при использовании OpenLayers 3 и proj4 в Angular 2 с использованием веб-пакета, необходимо явно указать 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");
...
}
Этот пример демонстрирует, как использовать proj4js с ol3: http://openlayers.org/en/v3.3.0/examples/wms-image-custom-proj.html
В основном использование proj4js в OpenLayers 3 работает прозрачно. Сначала вам нужно добавить определение 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');