banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Tue 01 June 2010 17:40

gallab
Participant occasionnel
Lieu: Marseille
Date d'inscription: 28 May 2010
Messages: 19

Création de layer ac OpenScales 1.1.4

Bonjour,

Je développe avec le framework libre OpenScales 1.1.4.

Je souhaite instancier dynamiquement des calques avec Action Script. (un click sur une checkbox => création du calque)
désolé de la qualité du code, il m'a servit pour plusieurs test...

le code de l'instanciation se situe dans la fonction

Code:

protected function chkTasmania_clickHandler(event:MouseEvent):void

Pour résumer je clique sur la checkbox et le calque ne s'affiche pas sad

Code:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    xmlns:os="http://openscales.org"
    creationComplete="initApp()" width="1015.0758" height="636.2879" xmlns:basetypes="org.openscales.fx.basetypes.*">
    
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            
            import org.openscales.core.Map;
            import org.openscales.core.Trace;
            import org.openscales.core.events.MapEvent;
            import org.openscales.core.layer.ogc.WFS;
            import org.openscales.core.layer.ogc.WMS;
            import org.openscales.core.style.Style;

            [Bindable] private var map:Map = null;
            [Bindable] public var displayTrace:Boolean = false;    
            [Bindable] public var displayFirebugTrace:Boolean = false;
            
            
            import org.openscales.core.events.LayerEvent;
            import org.openscales.core.events.MapEvent;
            import org.openscales.core.layer.Layer;
            
            public var calque:WMS;
            public var couche:WFS;
            
            private function initApp():void {
                map = fxmap.map;
            }
            
            protected function chkTasmania_clickHandler(event:MouseEvent):void
            {
                if (this.chkWater.selected)
                {
                    if (calque==null)    
                    {    
                    //calque    = new WMS("toto","http://srvsig01:1234/geoserver/wms","topp:tasmania_water_bodies",false,true,"EPSG:4326","");
                    couche=new WFS("tasmania_water_bodies","http://srvsig01:1234/geoserver/wfs","topp:tasmania_water_bodies",false,true,"EPSG:4326");
                        map.addLayer(couche);
                        this.map.addChild(couche);
                        map.zoom=7;
                    }
                }
                
            }

        ]]>
    </mx:Script>
    
    <mx:Panel x="10" y="10" width="321" height="213" layout="absolute" title="Sélection des couches">
        <mx:Label x="0" y="146" text="Zoomer sur.." width="80"/>
        <mx:TextInput x="81.5" y="145" width="138" text="blabla"/>
        <mx:Button x="227.5" y="144" label="Zoom"/>
        <mx:CheckBox x="10" y="69" label="Tasmania water (WMS)" id="chkWater" click="chkTasmania_clickHandler(event)" selected="false"/>
    </mx:Panel>
    
    <mx:VRule x="339" y="0" width="32" height="615"/>
    
    <mx:Panel x="364" y="9.1" width="638.9394" height="595.9091" layout="absolute" title="Carte" id="panelMap">
        <os:Map id="fxmap"
                width="555"
                height="403"
                zoom="5"
                centerLonLat="143.83482400000003,-43.648056" x="49" y="26">
            
            <os:DragHandler/><os:WheelHandler/>
            
            <os:Spinner id="spinner"
                        x="{width / 2}"
                        y="{height / 2}"/>
            
            <os:MousePosition x="100"
                              y="{height-200}"
                              displayProjection="EPSG:4326"/>
            <!--<os:Mapnik name="Mapnik" isBaseLayer="true" />-->
            
            <os:WFS 
                id="stateBoundaries"
                name="tutu"
                url="http://srvsig01:1234/geoserver/wms"
                typename="topp:tasmania_state_boundaries"
                isBaseLayer="true"
                projection="EPSG:4326"
                version="1.0.0"
                style="{Style.getDefaultSurfaceStyle()}">
            </os:WFS>
        
            
        </os:Map>
    </mx:Panel>
    
    <!-- Outils de Zoom -->
    <os:ControlPanel x="9.9" y="249" width="320.98486" height="378.10608">
        <os:ZoomBoxComponent map="{map}"
                             width="32"
                             height="32"/>
        
        <os:ZoomComponent map="{map}"/>
    </os:ControlPanel>
    
</mx:Application>

Merci,


Gallien

Hors ligne

 

#2 Sat 05 June 2010 10:36

ABA
Juste Inscrit !
Date d'inscription: 5 Jun 2010
Messages: 1

Re: Création de layer ac OpenScales 1.1.4

Bonjour,

Pour permettre de sélectionner les couches à afficher/masquer il ne faut pas utiliser le clickHandler qui est destiné à interagir avec la carte et ses objets mais il faut utiliser le contrôle LayersSwitcher qui a été créé pour cela.

Pour la suite, je vous invite à continuer les échanges sur vos problématiques relatives à OpenScales sur la communauté dédiée en allant sur le groupe de discussion http://groups.google.com/group/openscales-dev

La langue par défaut du groupe de discussion est l'anglais mais, si nécessaire, n'hésitez pas à poser des questions en français puisque la moitié de la communauté est francophone.

PS: je vous encourage également à utiliser la nouvelle version 1.1.7 disponible sur http://bitbucket.org/gis/openscales/downloads/. Le site OpenScales.org est actuellement en cours de refonte du fait de la migration de forge vers bitbucket.

Aurélien Barbier-Accary
Administrateur OpenScales : http://openscales.org

Hors ligne

 

#3 Thu 10 June 2010 11:09

gallab
Participant occasionnel
Lieu: Marseille
Date d'inscription: 28 May 2010
Messages: 19

Re: Création de layer ac OpenScales 1.1.4

Bonjour,

Merci ! Je viens de lire votre réponse!
En effet, il existe le composant LayerSwitcher mais je ne souhaite pas l'utiliser car il ne correspond pas à mes besoins (par exemple je ne souhaite pas pouvoir donner la possibilite à l'utilisateur de supprimer un calque !)


J'ai par ailleurs résolu ce problème :
dans l'instanciation d'un calque WFS en AS il faut définir le paramètre de style du calque.
ex:

Code:

calque.style=Style.getDefaultLineStyle();

Gallien

Hors ligne

 

Pied de page des forums

Powered by FluxBB