Suite

Openlayers3 utilisant EPSG personnalisé : 25832

Openlayers3 utilisant EPSG personnalisé : 25832


Je souhaite utiliser EPSG:25832 comme projection par défaut pour tous mes calques. La projection ne fonctionne pas correctement car la Position (point central) devrait être en Allemagne mais je me retrouve en France. Quand je veux faire un panoramique vers l'Allemagne, j'obtiens une "InvalidStateError". J'ai fait ce qui suit :

  1. chargé la dernière version de proj4j avec

et

  1. défini la projection (paramètre de http://spatialreference.org/ref/epsg/etrs89-utm-zone-32n/) :
var myProjectionName = 'EPSG:25832'; proj4.defs(myProjectionName, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs");
  1. créé la projection :
var maProjection = new ol.proj.Projection({ code : myProjectionName, étendue : [265948.8191, 6421521.2254, 677786.3629, 7288831.7014], unités : 'm' }); ol.proj.addProjection(maProjection);

J'ai également obtenu le paramètre d'étendue à partir de http://spatialreference.org/ref/epsg/etrs89-utm-zone-32n/

  1. créé la carte :
var map = new ol.Map({layers:layers, target: 'map', view: new ol.View({ projection: myProjection, // Est-ce nécessaire? center: ol.proj.transform([7.20,51.67] , 'EPSG:4326', myProjectionName), zoom : 10 }) });

J'ai vu différentes approches sur la façon dont la carte a été créée (avec et sans le paramètre de projection). La projection est-elle nécessaire ou suffit-il d'ajouter le "ol.proj.transform" au paramètre Center ?

Avant d'utiliser

centre : ol.proj.transform([7.20,51.67], 'EPSG:4326', 'EPSG:3857'),

qui a bien fonctionné pour afficher les données. Maintenant, je travaille avec un WFS-T et il est nécessaire d'utiliser EPSG:25832. Qu'est-ce qui ne va pas avec ma projection ?


l'étape 3 n'est pas nécessaire… et vous causera peut-être des problèmes. cela suffit pour déclarer votre projectionvar myProjectionName = 'EPSG:25832'; proj4.defs(myProjectionName, "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs");

alors vous pouvez appelervar maProjection = ol.proj.get(monNomProjection)pour obtenir votre projection en tant qu'objet de projection approprié. Maintenant, si vous voulez le transmettre à la carte, à la vue, aux couches, etc., utilisezmaProjectionvariable.

Pour votre centre d'utilisation :centre : ol.proj.transform([7.20,51.67], 'EPSG:4326', 'EPSG:25832')

Pour votre question concernant s'il est nécessaire d'être transmis, l'initialisation de la vue dépend de ce que vous voulez faire. Voulez-vous l'utiliser comme projection par défaut ? Si oui, vous devez le passer. Mieux vaut faire un violon pour nous montrer votre cas. La confusion vient des couches que vous chargez et de la façon dont vous les déclarez.


Voir la vidéo: Openlayers 6 Tutorial #6 - Layer Switcher