2013/5/23 jorgelopez <[email protected]>: > 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. _______________________________________________ Spanish mailing list http://lists.osgeo.org/mailman/listinfo/spanish http://es.osgeo.org http://twitter.com/osgeoes
