[Spanish] openlayer bar charts

J.Alejandro Martinez Linares islanis at infomed.sld.cu
Wed Apr 18 16:22:32 EDT 2012



El 18/04/12 14:07, Wladimir Szczerban escribió:
> Hola Alejrando,
>
> Veo que ya casi lo tienes, mejor que enviar el código es poner un 
> enlace a la aplicación para ver como funciona, si es posible.
>
> Creo que tu problema está cuando defines el panel le estas indicando 
> como canvas que pinte en un nuevo elemento en esta linea
>  .canvas(map.appendChild(document.createElement("div"))) ;
>
> Yo nunca he usar el protovis pero mirando un poco la API[1] en el 
> canvas le deberías indicar el div que declaras en tu popup
> deberias tener algo así
> .canvas('ch') ;
Ya intente hacerlo asi pero no me funciona es como si protovis viera que 
no existe tal div creado por mi,debe existir alguna forma que el dic que 
yo cree ahi pueda ser visto, alguna forma de crear sobre el mapa un div 
que sea visto por los demas elementos y que flote sobre el mapa, gente 
ayudeneme, gracias de antemano


>
> Un problema que te puedes encontrar es que tienes que crear primero el 
> popup añadirlo al mapa para que se pinte y el div con id 'ch' exista y 
> luego es que deberías llamar a la función que te pinta el grafico.
ese es el problema me parece que no es un grafico lo que pinta o el mapa 
de geoserver no lo asimila bien, hay algo raro pero mis conocimientos no 
me permiten dar con ello porque tampoco tengo internet

>
> Otra opción es crear el div en el documento luego crear el grafico y 
> luego al crear el popup añadir en el popup el div con el grafico.
Esta idea esta buena pero como con javascript podria lograr algo asi, me 
gustaria que la cosa la llevaran por aqui, si alguien tiene idea de como 
hacerlo asi pues sería genial, y seguramente lo mas ideal
>
> Saludos,
>
> Bolo
>
> [1] http://mbostock.github.com/protovis/jsdoc/symbols/pv.Panel.html
>
>
>
> El 17 de abril de 2012 20:57, J.Alejandro Martinez Linares 
> <islanis en infomed.sld.cu <mailto:islanis en infomed.sld.cu>> escribió:
>
>     Hola gente es muy complejo usar dojo para poner el peque chart, ya
>     con eso muere lo facil de manejar el openlayer, por eso les pido
>     que me ayuden con algho mas facil solo quiero que dentro del popup
>     me muestre un chart que seguro se puede alguien me dijuo que con
>     la librería protovis saldría muy bien y trate de hacerlo pero el
>     grafico sale por fuera del popup, gracias de antemano me gustaria
>     que me ayudaran gracias me hace mucha falta, porque necesito esto.
>     aca les envío lo que he hecho y la imagen de lo que me sale,
>     reitero es importante para mi agradezco toda la ayuda posible gracias.
>
>     <html>
>     <head>
>
>     <title>OpenLayers Example</title>
>     <link rel="stylesheet" href="style.css" type="text/css">
>     <script src="charts/protovis.js" type="text/javascript"></script>
>     <script src="charts/jquery-1.4.2.min.js"
>     type="text/javascript"></script>
>     <script src="charts/jquery.tipsy.js" type="text/javascript"></script>
>     <script src="charts/tipsy.js" type="text/javascript"></script>
>     <script src="lib/Firebug/firebug.js"></script>
>     <script src="lib/OpenLayers.js"></script>
>     </head>
>     <body  onload="load()">
>     <div id="map" class="smallmap">
>     <div
>     id="pan">fdjfdkjfhkdjhkdfjhgkdjfhgkdjfhgkdfjghkdfjghkdfjghkdfjghkdfjhgkdjfhddurtierutyierutyieryt384y534jnrkjwes</div>
>
>     </div>
>     <script defer="defer" type="text/javascript">
>     OpenLayers.ProxyHost = "proxy.cgi?url=";
>
>     function  charting(){
>        var data = pv.range(10).map(Math.random),
>        w = 400,
>        h = 250,
>        x = pv.Scale.linear(0, 1).range(0, w),
>        y = pv.Scale.ordinal(pv.range(10)).splitBanded(0, h, 4/5);
>
>     var vis = new pv.Panel()
>        .width(w)
>        .height(h)
>        .bottom(20)
>        .left(20)
>        .right(10)
>        .top(5)
>        .canvas(map.appendChild(document.createElement("div"))) ;
>
>     var bar = vis.add(pv.Bar)
>        .data(data)
>        .top(function() y(this.index))
>        .height(y.range().band)
>        .left(0)
>        .width(x)
>        .title(function(d) d.toFixed(1))
>        .event("mouseover", pv.Behavior.tipsy({gravity: "w", fade: true}));
>
>     bar.anchor("left").add(pv.Label)
>        .textMargin(5)
>        .textAlign("right")
>        .text(function() "ABCDEFGHIJK".charAt(this.index));
>
>     vis.add(pv.Rule)
>        .data(x.ticks())
>        .left(function(d) Math.round(x(d)) - .5)
>        .strokeStyle(function(d) d ? "rgba(255,255,255,.3)" : "#000")
>      .add(pv.Rule)
>        .bottom(0)
>        .height(5)
>        .strokeStyle("#000")
>      .anchor("bottom").add(pv.Label)
>        .text(function(d) d.toFixed(1));
>
>     vis.render();
>     }
>
>     function mostrarMapa(c){
>        var bounds = new OpenLayers.Bounds
>            (
>            -84.956, 19.825,
>            -74.132, 23.984
>            );
>        vlayer = new OpenLayers.Layer.Vector( "Editable" );
>        var options = {
>                    controls: [
>                                new OpenLayers.Control.Navigation(),
>                              //new OpenLayers.Control.PanZoomBar(),
>                              new
>     OpenLayers.Control.EditingToolbar(vlayer),
>                              new OpenLayers.Control.PanZoom(),
>                              new OpenLayers.Control.NavToolbar(),
>                              new OpenLayers.Control.LayerSwitcher(),
>                              new OpenLayers.Control.Attribution(),
>                              new OpenLayers.Control.Permalink(),
>                              new OpenLayers.Control.ScaleLine(),
>                              new OpenLayers.Control.OverviewMap(),
>                              new OpenLayers.Control.WMSGetFeatureInfo(),
>                              new OpenLayers.Control.MousePosition(),
>                              new OpenLayers.Control.MouseToolbar()
>                                ],
>                    maxExtent: bounds,
>                    maxResolution: 0.04228125,
>                    projection: "EPSG:4326",
>                    units: 'degrees'
>                };
>
>        var map = new OpenLayers.Map('map',options);
>        nav = new OpenLayers.Control.NavigationHistory();
>        map.addControl(nav);
>        panel = new OpenLayers.Control.Panel(
>                                                {div:
>     document.getElementById("panel")}
>                                            );
>        panel.addControls([nav.next, nav.previous]);
>        map.addControl(panel);
>
>        var political = new OpenLayers.Layer.WMS(
>                                                    "provincias WMS",
>                                                  
>      "http://localhost:8080/geoserver/une/wms",
>                                                    {'layers':
>     'une:uneProvincia',transparent: true, format: 'image/gif'},
>                                                    {isBaseLayer: true}
>                                                );
>
>        var highlight = new OpenLayers.Layer.Vector(
>                                                        "Highlighted
>     Features",
>                                                      
>      {displayInLayerSwitcher: false, isBaseLayer: false }
>                                                    );
>
>
>
>        map.addLayers([political, highlight,vlayer]);
>
>
>     info = new OpenLayers.Control.WMSGetFeatureInfo(
>                                                        {
>                                                            url:
>     'http://localhost:8080/geoserver/une/wms', title: 'Identify
>     features by clicking',
>                                                          
>      queryVisible: true,
>                                                          
>      eventListeners: {
>                                                                      
>          getfeatureinfo: function(event) {
>                                                                      
>                                          map.addPopup(
>                                                                      
>                                                      new
>     OpenLayers.Popup.FramedCloud(
>                                                                      
>                                                                      
>                    "chicken",
>                                                                      
>                                                                      
>                    map.getLonLatFromPixel(event.xy),
>                                                                      
>                                                                      
>                    null,
>                                                                      
>                                                                      
>                        "<div id='ch'></div>"+charting(),
>                                                                      
>                                                                      
>                    null,
>                                                                      
>                                                                      
>                    true
>                                                                      
>                                                                      
>                )
>                                                                      
>                                                  );
>                                                                      
>                                      }
>                                                                        }
>                                                        }
>                                                        );
>
>
>
>
>        //OpenLayers.Console.debug(info.output);
>
>        map.addControl(info);
>        info.activate();
>        OpenLayers.Console.dir(info);
>        map.addControl(new OpenLayers.Control.LayerSwitcher());
>        map.zoomToMaxExtent();
>     }
>
>     function load() {
>        ///var chart=charting();
>        mostrarMapa(3);
>
>        ///OpenLayers.Console.dir(a);
>        //a.write("map");
>     }
>     </script>
>     <div id="docs">sdfs</div>
>
>     </body>
>     </html>
>
>
>
>
>
>
>     --
>
>     Este mensaje le ha llegado mediante el servicio de correo
>     electronico que ofrece Infomed para respaldar el cumplimiento de
>     las misiones del Sistema Nacional de Salud. La persona que envia
>     este correo asume el compromiso de usar el servicio a tales fines
>     y cumplir con las regulaciones establecidas
>
>     Infomed: http://www.sld.cu/
>
>     _______________________________________________
>     Spanish mailing list
>     http://lists.osgeo.org/mailman/listinfo/spanish
>     http://es.osgeo.org
>     http://twitter.com/osgeoes
>
>
>
>
> -- 
> Saludos,
>
> Bolo
> www.geoinquiets.cat <http://www.geoinquiets.cat>
>
>
> _______________________________________________
> Spanish mailing list
> http://lists.osgeo.org/mailman/listinfo/spanish
> http://es.osgeo.org
> http://twitter.com/osgeoes
>    


--

Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.osgeo.org/pipermail/spanish/attachments/20120418/d4502593/attachment-0001.html


More information about the Spanish mailing list