/examples/ArcGISLink/src/Find.mxml
http://gmaps-utility-library-flash.googlecode.com/ · Macromedia eXtensible Markup Language · 155 lines · 139 code · 16 blank · 0 comment · 0 complexity · 77ba535df4df28462c1a9b45ab4e1ea1 MD5 · raw file
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="absolute"
- width="100%"
- height="100%">
- <mx:Panel title="Layer Find:"
- width="100%"
- height="100%">
- <mx:HBox width="100%"
- height="100%">
- <mx:VBox height="100%"
- width="80%">
- <mx:HBox>
- <mx:Label text="Search a State, City or River with name containing text:"/>
- <mx:TextInput text="KS"
- id="q"
- maxChars="20"
- width="84"/>
- <mx:Button label="Find"
- id="find"
- enabled="false"
- click="findData(q.text)"/>
- <mx:CheckBox label="Exact Match"
- id="exact"/>
- </mx:HBox>
- <mx:Label text="Running...."
- id="busy"
- color="#FF1200"
- width="131"
- visible="false"/>
- <maps:Map xmlns:maps="com.google.maps.*"
- id="map"
- mapevent_mapready="onMapReady(event)"
- width="100%"
- height="100%"
- key="ABQIAAAA7QUChpcnvnmXxsjC7s1fCxQGj0PqsCtxKvarsoS-iqLdqZSKfxTd7Xf-2rEc_PC9o8IsJde80Wnj4g" sensor="false"/>
-
-
- </mx:VBox>
- <mx:List height="100%"
- width="20%"
- id="results">
-
- </mx:List>
- </mx:HBox>
-
- </mx:Panel>
-
- <mx:Script>
- <![CDATA[
- import mx.events.ListEvent;
- import mx.controls.*;
- import mx.controls.dataGridClasses.*;
- import com.google.maps.controls.*;
- import com.google.maps.overlays.*;
- import com.google.maps.*;
- import com.google.maps.interfaces.*;
-
- import com.google.maps.extras.arcgislink.*;
-
-
- private var service:MapService;
- private var grid:DataGrid;
-
- [Bindable]
- private var findValues:Array=new Array();
- private var overlayResults:Array=new Array();
-
-
- private function onMapReady(event:Event):void {
- map.setCenter(new LatLng(40, -100), 4);
- map.addControl(new MapTypeControl());
- map.addControl(new NavigationControl());
- map.enableScrollWheelZoom();
- map.enableContinuousZoom();
- grid=new DataGrid();
- var c:DataGridColumn=new DataGridColumn();
- c.headerText='Name';
- c.dataField='name';
- var c2:DataGridColumn=new DataGridColumn();
- c2.headerText='Value';
- c2.dataField='value';
- grid.columns=[c, c2];
- //var t:List = new List();
- grid.width=300;
- grid.height=200;
- service=new MapService('http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer');
-
- service.addEventListener(ServiceEvent.LOAD, function(evt:Event):void {
- find.enabled=true;
- });
- service.addEventListener(ServiceEvent.ERROR, function(evt:ServiceEvent):void{
- Alert.show(evt.data.toString());
- });
- results.dataProvider=findValues;
- results.addEventListener(ListEvent.ITEM_CLICK, function(evt:ListEvent):void {
- var row:int=evt.rowIndex;
- if (overlayResults[row]) {
- var ov:*=overlayResults[row];
- ov.dispatchEvent(new MapMouseEvent(MapMouseEvent.CLICK, ov, (ov is Marker) ? (ov as Marker).getLatLng() : ov.getLatLngBounds().getCenter()));
-
- }
- });
- }
-
- private function findData(q:String):void {
- map.clearOverlays();
- map.closeInfoWindow();
- var ex:Boolean=exact.selected;
- findValues=[];
- overlayResults=[];
- var params:FindParameters=new FindParameters({returnGeometry: true, searchText: q,
- contains: !ex, layerIds: service.getLayerIdsByName(['Cities', 'Rivers', 'States']),
- searchFields: ["CITY_NAME", "NAME", "SYSTEM", "STATE_ABBR", "STATE_NAME"]});;
- busy.visible=true;
- service.find(params, processFindResults);
- }
-
- private function processFindResults(rs:FindResults):void {
- busy.visible=false;
- var fs:Array=rs.results;
- for (var i:int=0, c:int=fs.length; i < c; i++) {
- processFindResult(fs[i]);
- }
- results.dataProvider=findValues;
- }
-
- private function processFindResult(res:FindResult):void {
- var title:String=res.layerName + ':' + res.foundFieldName + ' = ' + res.value;
- var ovs:Array= res.geometry;
- var a:*=res.attributes;
- var html:Array=[];
- for (var x:String in a) {
- if (a.hasOwnProperty(x)) {
- html.push({name: x, value: a[x]});
- }
- }
- findValues.push(title);
- for (var j:int=0, jc:int=ovs.length; j < jc; j++) {
- var ov:*=ovs[j];
- var idx:int = overlayResults.length;
- ov.addEventListener(MapMouseEvent.CLICK, function(evt:MapMouseEvent):void {
- var latlng:LatLng= evt.latLng;
- grid.dataProvider=html;
- var options:InfoWindowOptions=new InfoWindowOptions({customContent: grid, drawDefaultFrame: true});
- map.openInfoWindow(latlng, options);
- results.selectedIndex = idx;
- });
- overlayResults.push(ov);
- map.addOverlay(ov);
- }
- }
- ]]>
- </mx:Script>
- </mx:Application>