Proyecciones - sigcorporativo-ja/Mapea4 GitHub Wiki

Mapea (v5.1.0+) contiene una serie de proyecciones predefinidas, que se utilizan para la construcción de mapas y algunas operaciones internas.

El usuario puede añadir nuevas proyecciones a través del api de la siguiente manera:

// Definimos proyeccion 32630 que no se incluye por defecto en Mapea
const proj32630 = {
  def: '+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"',
  extent: [166021.4431, 0.0000, 833978.5569, 9329005.1825],
  codes: ['EPSG:32630', 'urn:ogc:def:crs:EPSG::32630', 'http://www.opengis.net/gml/srs/epsg.xml#32630'],
  units: 'm',
};

M.projection.addProjections(proj32630);  

// v6.2.0+ Consulta de las proyecciones registradas
console.log('Proyecciones soportadas: ', M.projection.getSupportedProjs());

Las páginas https://epsg.io y https://spatialreference.org ofrecen información sobre múltiples proyecciones.

De esta manera, se podría por ejemplo definir una capa GeoJSON cuyos features tuvieran coordenadas en EPSG:32630, y visualizarla en un mapa EPSG:25830, al ser posible la reproyección automática entre ambos sistemas, al tener ambos registrados.

Ver ejemplo funcional

Si lo que se desea es reproyectar sobre la marcha un feature de un CRS a otro, se puede acceder a la capa de implementación de OL:

// Objeto M.Feature con coordenadas 4326 
 var miFeature = new M.Feature("featurePrueba001", {
    properties: {
      atributo1: "valor1",
      atributo2: "valor2"
    },
    type: "Feature",
    geometry: {
      type: "Point",
      coordinates: [-5.989253, 37.39265]
    }
  });

  // Reproyectamos feature al del mapa
  miFeature.getImpl().getOLFeature().getGeometry().transform('EPSG:4326', mapajs.getProjection().code);;
  
  // Ya podemos añadirlo a una capa GeoJSON que también esté en 25830 
  layer2.addFeatures([miFeature]);