Estoy leyendo el Guía del usuario de Proj4js pero no puedo entenderlo. Importo la biblioteca
<script src="lib/proj4js-combined.js"></script>
Entonces,
function init() {
(...) // reading from GML string - one polygon in EPSG:3031
var features = format.read(strGML);
Proj4js.defs['EPSG:3031'] = '+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs';
var source = new OpenLayers.Projection('EPSG:3031');
var wgs84 = new OpenLayers.Projection('WGS84');
OpenLayers.Projection.transform(features[0], source, wgs84);
(...) // show polygon on map
}
Bueno, esto no funciona. La lectura de la cadena GML funciona bien ya que el polígono se muestra correctamente en el mapa si las coordenadas están en WGS84 (y sin la transformación, por supuesto). Pero cuando pongo la cadena con otras coordenadas e intento transformar no funciona. ¿Es posible transformar un polígono de una vez o tengo que hacerlo punto por punto (y cómo lo haría)? Gracias
EDITAR: Mi cadena GML se parece a esto:
<gml:featureMember xmlns:gml="http://www.opengis.net/gml xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<feature:feature xmlns:feature="http://example.com/feature">
<feature:geometry>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:posList>591674.39 5022898.05 545682.5 4722908.1 571701.44 5322909.29 651691.25 5022904.6 591674.39 5022898.05
</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</feature:geometry>
</feature:feature>
</gml:featureMember>
¿Debería, en lugar de
OpenLayers.Projection.transform(features[0], source, wgs84);
escribir
OpenLayers.Projection.transform(features[0].geometry, source, wgs84);
¿o incluso algo más?