Quantcast
Channel: Forums - ArcGIS Viewer for Flex
Viewing all articles
Browse latest Browse all 2097

User-defined Layer Definition

$
0
0
I am trying to create an application where a user can define the layer definition for a map service. I can it get it work if I add the layer in the action script, but I would really like to apply the layer definition to an existing map layer. Here is the code that works (adds a layer and applies the query):

Code:

private function PerformQuery():void  {
                                                       
                                        var dLayer:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("http://apdpdgismap01:6080/arcgis/rest/services/GISDPD01/CrimePart1_28Days/MapServer");
                                                map.addLayer(dLayer);
                                                dLayer.visible = true;
                                        //var dLayer:ArcGISDynamicMapServiceLayer = map.getLayer("CrimePart1_28Days") as ArcGISDynamicMapServiceLayer;
                                                dLayer.name = "CrimePart1_28Days"
                                            var layerDefs:Array = new Array();
                                                var layerStr:String = new String();
                                                layerStr = "DIVISION = '" + Offense.text + "'"
                                                layerDefs[0] = layerStr;
                                                dLayer.layerDefinitions = layerDefs;
                                                dLayer.refresh();
                                }
                    ]]>
    </fx:Script>
    <viewer:WidgetTemplate id="DPD_Crime_Data"
                          width="300" height="300">
        <viewer:layout>
            <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
        </viewer:layout>

        <s:Label id="lbl"
                width="100%"
                fontSize="18"
                fontStyle="italic"
                fontWeight="bold"/>
                <s:TextInput id="Offense"
                                        width="100%" />
       
                <s:Button label="Query Crime" click="PerformQuery();"/>
    </viewer:WidgetTemplate>
</viewer:BaseWidget>

I can't get the layer definition to work using an existing layer. Here is the code that doesn't work:

Code:

 
private function PerformQuery():void  {
                                                       
                                        //var dLayer:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("http://apdpdgismap01:6080/arcgis/rest/services/GISDPD01/CrimePart1_28Days/MapServer");
                                                //map.addLayer(dLayer);
                                                //dLayer.visible = true;
                                        var dLayer:ArcGISDynamicMapServiceLayer = map.getLayer("CrimePart1_28Days") as ArcGISDynamicMapServiceLayer;
                                                dLayer.name = "CrimePart1_28Days"
                                            var layerDefs:Array = new Array();
                                                var layerStr:String = new String();
                                                layerStr = "DIVISION = '" + Offense.text + "'"
                                                layerDefs[0] = layerStr;
                                                dLayer.layerDefinitions = layerDefs;
                                                dLayer.refresh();
                                }
                    ]]>
    </fx:Script>
    <viewer:WidgetTemplate id="DPD_Crime_Data"
                          width="300" height="300">
        <viewer:layout>
            <s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
        </viewer:layout>

        <s:Label id="lbl"
                width="100%"
                fontSize="18"
                fontStyle="italic"
                fontWeight="bold"/>
                <s:TextInput id="Offense"
                                        width="100%" />
       
                <s:Button label="Query Crime" click="PerformQuery();"/>
    </viewer:WidgetTemplate>
</viewer:BaseWidget>


This is how the layer is added in the config file:

<layer label="CrimePart1_28Days" id="CrimePart1_28Days" type="feature" visible="true" alpha="1.0"
                  url="http://apdpdgismap01:6080/arcgis/rest/services/GISDPD01/CrimePart1_28Days/MapServer/0"/>
        </operationallayers>

The layer does appear on the map, but nothing happens when the layer definition is applied.

I am a FLEX newbie, so any insight would be appreciated.

Jon Barlett
GIS Analyst
Dallas PD

Viewing all articles
Browse latest Browse all 2097

Trending Articles