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.
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]);