[Spanish] Duda WMC OpenLayers

María Arias de Reyna delawen at gmail.com
Thu May 23 00:46:35 PDT 2013


2013/5/23 jorgelopez <jorgelopez.physics at gmail.com>:
> Hola a todos:
>
> A ver si alguien me puede ayudar o arrojar un poco de luz. Tengo una duda
> sobre cómo/cuándo utilizar el formato WMC  de Openlayers dentro de una
> aplicación web. Lo que quiero conseguir es tener el contexto de un mapa
> (mapaA) en formato WMC para poder replicarlo (capas visibles, número de
> capas) en otros mapas.
>
> Mi problema es que para poder utilizar los métodos read/write hace falta que
> el mapa esté ya renderizado en el navegador (ver ejemplo OL
> http://openlayers.org/dev/examples/wmc.html), lo que no sé si se puede hacer
> es crear un mapaB a partir del mapaA durante la instanciación de variables
> map y layers (¿se puede?).
>
> var options = {
>                 sphericalMercator: true,
>                 projection: new OpenLayers.Projection("EPSG:900913"),
>                 units: "m",
>                 layers: App.config.layers,
>                 controls: []
>                  }
>
> map = new OpenLayers.Map(options);
>
> (No le indico ningun div pues el mapa se muestra en un contenedor, que es un
> mapPanel de GeoExt)
>
> Como no hay un evento render (o afterrender) en OL, no puedo indicarle que
> cuando se renderice el mapa que calcule el contexto, al menos de esta
> manera:
>
> var formatWMC = new OpenLayers.Format.WMC({});
> .....
> .....
>
> var mapInWMCFormat = formatWMC.write(map);
>
> .....
> .....
>
>
> var contextMap = formatWMC.read(mapInWMCFormat);   <-- objetos contexto
> var wmsLayer = formatWMC.getLayersFromContext(contextMap.layersContext);
> <-- objetos layers WMS
>
> Quizá se puede hacer usando algún método pero no sé cómo hacerlo.
>
> Gracias de antemano
>
> Jorge
>
>

Me temo que sin renderizar un mapa, es como tú dices, complicado, si
no imposible. Entiendo que lo que quieres es tener una "plantilla" de
mapa de donde ir creando nuevos mapas, ¿cierto?

Lo de clonar mapas se puede, pero acuerdate de clonar capa a capa y
control a control, o lo que modifiques en un mapa se modificará en el
otro también (es importante que cada instancia de objeto "layer" y
"control" sean diferentes en cada mapa).

Para tu problema se me ocurren varias opciones.

Una es renderizar el mapa plantilla en un div con display:none pero no
estoy muy segura de que eso vaya a funcionar bien (y lo que es peor:
vas a tener un mapa completo en memoria ahí detrás, interfiriendo con
vete tú a saber qué).

Otra opción es que guardes la configuración WMC en memoria y se la
vayas aplicando a los mapas que vayas creando, uno a uno. ¿De verdad
necesitas un mapaA completo?

Y la última, y más fea, es que te metas en las entrañas del reader del
WMC y guardes esta configuración a tu manera, de forma que tengas una
plantilla con tu formato y que lo apliques cuando te convenga (es una
variante compleja de la opción anterior).

Pero sin saber más sobre para qué quieres exactamente esto, es difícil ayudarte.


More information about the Spanish mailing list