POST
|
Steve, it's ESRI developer team sample upgraded to show you the way to get a TimeSlider reference <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"
xmlns:s="library://ns.adobe.com/flex/spark"
pageTitle="Earthquakes 1970-2009">
<!--
esri dev. team sample http://resources.arcgis.com/en/help/flex-api/samples/01nq/01nq0000001m000000.htm
-->
<s:layout>
<s:VerticalLayout horizontalAlign="center"
paddingBottom="10"
paddingTop="10"/>
</s:layout>
<fx:Style>
@namespace mx "library://ns.adobe.com/flex/mx";
@namespace esri "http://www.esri.com/2008/ags";
@namespace s "library://ns.adobe.com/flex/spark";
/* for the slider tooltip that shows the date as you move the slider */
mx|ToolTip {
font-size: 14;
}
</fx:Style>
<fx:Script>
<![CDATA[
import com.esri.ags.events.LayerEvent;
import com.esri.ags.layers.supportClasses.TimeInfo;
import mx.controls.Alert;
import mx.core.IVisualElement;
import mx.utils.StringUtil;
import spark.globalization.supportClasses.GlobalizationBase;
protected function fLayer_loadHandler(event:LayerEvent):void
{
var timeInfo:TimeInfo = fLayer.layerDetails.timeInfo;
myTimeSlider.createTimeStopsByTimeInterval(timeInfo.timeExtent, timeInfo.timeInterval, timeInfo.timeIntervalUnits);
myTimeSlider.play(); // start playing automatically
}
protected function onGetInfo1(event:MouseEvent):void
{
var ts:TimeSlider = esriMap.timeSlider as TimeSlider;
if (ts != null)
{
var message:String = StringUtil.substitute("Id: {0}\nVisible: {1}\nNumber of stops: {2}\n...",
ts.id, ts.enabled, ts.timeStops.length);
Alert.show(message, "TimeSlider info from map");
}
}
protected function onGetInfo2(event:MouseEvent):void
{
var message:String = StringUtil.substitute("Is playing now: {0}\nVisible: {1}\nNumber of stops: {2}\n...",
myTimeSlider.playing, myTimeSlider.enabled, myTimeSlider.timeStops.length);
Alert.show(message, "Direct TimeSlider info");
}
protected function onGetInfo3(event:MouseEvent):void
{
var ts:TimeSlider;
for (var i:int; i < numElements-1; i++)
{
try
{
var element:IVisualElement = this.getElementAt(i)
if (element is TimeSlider)
{
ts = element as TimeSlider;
break;
}
}
catch (error:Error)
{
trace(error.getStackTrace());
}
}
if (ts != null)
{
var message:String = StringUtil.substitute("Is playing now: {0}\nVisible: {1}\nNumber of stops: {2}\nId: {3}\n...",
ts.playing, myTimeSlider.enabled, myTimeSlider.timeStops.length, ts.id);
Alert.show(message, "TimeSlider info from application");
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/globalization/DateTimeFormatter.html#setDateTimePattern() -->
<s:DateTimeFormatter id="myDateFormatter" dateTimePattern="MMMM yyyy"/>
</fx:Declarations>
<s:Label fontSize="20" text="Major Earthquakes 1970-2009"/>
<s:Label fontSize="13"
text="In total {fLayer.numGraphics} earthquakes."
visible="{fLayer.numGraphics > 0}"/>
<s:Button label="Get information about time slider from map"
click="onGetInfo1(event)"/>
<s:Button label="Get information about time slider from application"
click="onGetInfo3(event)"/>
<s:Button label="Get information about time slider directly"
click="onGetInfo2(event)"/>
<esri:Map id="esriMap"
timeSlider="{myTimeSlider}">
<esri:lods>
<esri:LOD resolution="39135.7584820001" scale="147914381.897889"/>
<esri:LOD resolution="19567.8792409999" scale="73957190.948944"/>
<esri:LOD resolution="9783.93962049996" scale="36978595.474472"/>
<esri:LOD resolution="4891.96981024998" scale="18489297.737236"/>
<esri:LOD resolution="2445.98490512499" scale="9244648.868618"/>
<esri:LOD resolution="1222.99245256249" scale="4622324.434309"/>
<esri:LOD resolution="611.49622628138" scale="2311162.217155"/>
</esri:lods>
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
<esri:FeatureLayer id="fLayer"
load="fLayer_loadHandler(event)"
mode="snapshot"
outFields="[Magnitude]"
url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Earthquakes/Since_1970/MapServer/0">
<esri:renderer>
<esri:ClassBreaksRenderer field="Magnitude">
<esri:ClassBreakInfo maxValue="5">
<esri:symbol>
<esri:SimpleMarkerSymbol alpha="0.8"
color="0xFF0000"
size="8"
style="triangle">
<esri:SimpleLineSymbol color="0xAA0000"/>
</esri:SimpleMarkerSymbol>
</esri:symbol>
</esri:ClassBreakInfo>
<esri:ClassBreakInfo maxValue="7" minValue="5">
<esri:symbol>
<esri:SimpleMarkerSymbol alpha="0.8"
color="0xFF0000"
size="12"
style="triangle">
<esri:SimpleLineSymbol color="0xAA0000"/>
</esri:SimpleMarkerSymbol>
</esri:symbol>
</esri:ClassBreakInfo>
<esri:ClassBreakInfo minValue="7">
<esri:symbol>
<esri:SimpleMarkerSymbol alpha="0.8"
color="0xFF0000"
size="25"
style="triangle">
<esri:SimpleLineSymbol color="0xAA0000"/>
</esri:SimpleMarkerSymbol>
</esri:symbol>
</esri:ClassBreakInfo>
</esri:ClassBreaksRenderer>
</esri:renderer>
</esri:FeatureLayer>
</esri:Map>
<esri:TimeSlider id="myTimeSlider" enabled="{fLayer.loaded}"/>
<s:Label fontSize="14"
fontWeight="bold"
text="{myDateFormatter.format(myTimeSlider.timeExtent.endTime)}"/>
<s:Label width="100%" text="This map has one time-aware layer: a feature layer showing earthquakes, which on the client are rendered as triangles of different sizes based on the 'magnitude' of the feature."/>
</s:Application>
... View more
05-20-2013
11:05 PM
|
0
|
0
|
233
|
POST
|
As 1 of possible solution - U can play flash in full screen, but with some restrictions, such as no ability to use keyboard in full screen mode... <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="World Topographic Map">
<!--
ESRI dev. team sample - http://resources.arcgis.com/en/help/flex-api/samples/01nq/01nq00000044000000.htm
-->
<fx:Script>
<![CDATA[
protected function onFullScreenButtonClick(event:MouseEvent):void
{
if (stage.displayState == StageDisplayState.NORMAL)
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
else
{
stage.displayState = StageDisplayState.NORMAL;
}
}
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout horizontalAlign="center"
paddingTop="10"
gap="10"/>
</s:layout>
<fx:Declarations>
<esri:Extent id="initialExtent"
xmin="-13635000" ymin="4541000" xmax="-13625000" ymax="4547000">
<esri:SpatialReference wkid="102100"/>
</esri:Extent>
</fx:Declarations>
<s:Button id="btnFullScreen"
icon="http://s.xanga.com/images/settings/icon_fullscreen.gif"
label="Toggle fullscreen"
click="onFullScreenButtonClick(event)"/>
<esri:Map extent="{initialExtent}">
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>
</esri:Map>
</s:Application>
... View more
05-17-2013
03:47 AM
|
0
|
0
|
286
|
POST
|
Create own utility class, and convert string as you need. package your.package.name
{
public class MyHelperClass
{
public static function convertToHtml(str:String):String
{
if (str != null)
{
while (str.search("\n") != -1) {
str = str.replace("\n", "<br>");
}
}
return str;
}
public static function convertFromHtml(str:String):String
{
if (str != null)
{
while (str.search("<br>") != -1) {
str = str.replace("<br>", "\n");
}
}
return str;
}
}
} when needed just call var someString:String = "Acura,<br>Buick,<br>Corvette,<br>Dodge";
var result:String = MyHelperClass.convertFromHtml(someString);
... View more
04-21-2013
10:28 PM
|
0
|
0
|
327
|
POST
|
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <s:layout> <s:VerticalLayout gap="10" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" /> </s:layout> <fx:Script> <![CDATA[ import com.esri.ags.events.LayerEvent; import com.esri.ags.layers.FeatureLayer; import com.esri.ags.layers.supportClasses.Field; import com.esri.ags.layers.supportClasses.LayerDetails; import mx.controls.Alert; import mx.controls.Label; import spark.components.HGroup; private var fLayer:FeatureLayer = null; protected function onInitLayerClick(event:MouseEvent):void { fLayer = new FeatureLayer(txtUrl.text); fLayer.outFields = new Array("*"); fLayer.addEventListener(LayerEvent.LOAD, onLayerLoad); fLayer.addEventListener(LayerEvent.LOAD_ERROR, onLayerLoadError); dispatchEvent(new LayerEvent(LayerEvent.LOAD, fLayer)); } protected function onLayerLoad(event:LayerEvent):void { var layerDetails:LayerDetails = fLayer.layerDetails; var fields:Array = layerDetails.fields; groupContainer.removeAllElements(); for each (var field:Field in fields) { var hGroup:HGroup = new HGroup(); hGroup.gap = 5; var lblName:Label = new Label(); lblName.width = 200; lblName.text = "Name: " + field.name + ";"; hGroup.addElement(lblName); var lblAlias:Label = new Label(); lblAlias.width = 200; lblAlias.text = "Alias: " + field.alias + ";"; hGroup.addElement(lblAlias); var lblNullable:Label = new Label(); lblNullable.width = 100; lblNullable.text = field.nullable ? "Nullable" : "Not nullable;"; hGroup.addElement(lblNullable); var lblType:Label = new Label(); lblType.width = 100; switch (field.type) { case Field.TYPE_BLOB: lblType.text = "Is Blob;"; break; case Field.TYPE_DATE: lblType.text = "Is date;"; break; case Field.TYPE_DOUBLE: lblType.text = "Is double;"; break; case Field.TYPE_GEOMETRY: lblType.text = "Is geometry;"; break; case Field.TYPE_GUID: lblType.text = "Is GUID;"; break; case Field.TYPE_GLOBAL_ID: lblType.text = "Is global id;"; break; case Field.TYPE_INTEGER: lblType.text = "Is integer;"; break; case Field.TYPE_OID: lblType.text = "Is object id;"; break; case Field.TYPE_RASTER: lblType.text = "Is raster;"; break; case Field.TYPE_SINGLE: lblType.text = "Is single;"; break; case Field.TYPE_SMALL_INTEGER: lblType.text = "Is short;"; break; case Field.TYPE_STRING: lblType.text = "Is text;"; break; case Field.TYPE_XML: lblType.text = "Is xml;"; break; } hGroup.addElement(lblType); var lblEditable:Label = new Label(); lblEditable.width = 100; lblEditable.text = field.editable ? "Editable" : "Not editable;"; hGroup.addElement(lblEditable); if (field.length > 0) { var lblLength:Label = new Label(); lblLength.width = 100; lblLength.text = "Field length: " + field.length; hGroup.addElement(lblLength); } groupContainer.addElement(hGroup); } } protected function onLayerLoadError(event:LayerEvent):void { Alert.show(event.fault.message.toString(), "Layer is not loaded"); } ]]> </fx:Script> <s:TextInput id="txtUrl" width="100%" text="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/MapServer/67"/> <s:Button label="Initialize layer" click="onInitLayerClick(event)"/> <s:VGroup width="100%" height="100%" gap="5"> <s:Scroller width="100%" height="100%"> <s:VGroup height="100%" width="100%" id="groupContainer"/> </s:Scroller> </s:VGroup> </s:Application> P.S. SDK 4.9.0; ArcGIS API for FLEX 3.2
... View more
04-19-2013
05:43 AM
|
0
|
0
|
175
|
POST
|
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <s:layout> <s:VerticalLayout gap="10" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" /> </s:layout> <fx:Script> <![CDATA[ import mx.utils.StringUtil; protected function onAddTimeClick(event:MouseEvent):void { var now:Date = new Date(); addTextToSparkComponent(now.toString()); addTextToMxComponent(now.toString()); } private function addTextToSparkComponent(message:String):void { txtSpark.text = txtSpark.text.length > 0 ? StringUtil.substitute("{0}\n", txtSpark.text) : ""; txtSpark.text = StringUtil.substitute("{0}{1}", txtSpark.text, message); } private function addTextToMxComponent(message:String):void { while (message.search("\n") != -1) { message = message.replace("\n", "<br>"); } txtMx.htmlText = txtMx.text.length > 0 ? StringUtil.substitute("{0}<br>", txtMx.htmlText) : ""; txtMx.htmlText = StringUtil.substitute("{0}{1}", txtMx.htmlText, message); } protected function onAddInputClick(event:MouseEvent):void { var inputText:String = txtInput.text; addTextToSparkComponent(inputText); addTextToMxComponent(inputText); } ]]> </fx:Script> <s:Panel title="Inputs" width="100%"> <s:VGroup width="100%" height="100%" gap="10" paddingLeft="10" paddingTop="10" paddingBottom="10"> <s:Button label="Add now time" click="onAddTimeClick(event)"/> <s:Label text="Input smthing. Use 'ENTER' to make your text multiline." /> <s:TextArea id="txtInput" /> <s:Button label="Add inputs" click="onAddInputClick(event)"/> </s:VGroup> </s:Panel> <s:Panel title="Outputs" width="100%" height="100%"> <s:HGroup width="100%" height="100%" paddingLeft="10" paddingTop="10" paddingBottom="10"> <s:VGroup width="100%" height="100%"> <s:Label text="mx.controls.RichTextEditor" /> <mx:RichTextEditor id="txtMx" width="100%" height="100%" showControlBar="false"/> </s:VGroup> <s:VGroup width="100%" height="100%"> <s:Label text="spark.components.RichTextEditor" /> <s:RichEditableText id="txtSpark" width="100%" height="100%" /> </s:VGroup> </s:HGroup> </s:Panel> </s:Application> P.S. SDK 4.9.0 P.S.2 It's not ArcGIS Flex API question, don't you think? Adobe learning is here
... View more
04-19-2013
02:57 AM
|
0
|
0
|
327
|
POST
|
in "Find features in Map Layers" example used FindTask. Set FindParameters -> searchFields="[your id field name]". <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags" pageTitle="Find features in Map Layers"> <s:layout> <s:VerticalLayout horizontalAlign="center"/> </s:layout> <fx:Script> <![CDATA[ import com.esri.ags.Graphic; import com.esri.ags.events.FindEvent; import com.esri.ags.geometry.Geometry; private function doFind():void { findTask.execute(myFindParams); } private function executeCompleteHandler(event:FindEvent):void { myGraphicsLayer.clear(); var graphic:Graphic; resultSummary.text = "Found " + event.findResults.length + " results."; var resultCount:int = event.findResults.length; for (var i:Number = 0; i < resultCount; i++) { graphic = event.findResults.feature; graphic.toolTip = event.findResults.foundFieldName + ": " + event.findResults.value; switch (graphic.geometry.type) { case Geometry.MAPPOINT: { graphic.symbol = smsFind; break; } case Geometry.POLYLINE: { graphic.symbol = slsFind; break; } case Geometry.POLYGON: { graphic.symbol = sfsFind; break; } } myGraphicsLayer.add(graphic); } } ]]> </fx:Script> <fx:Declarations> <!-- Symbol for Find Result as Polyline --> <esri:SimpleLineSymbol id="slsFind" width="3" alpha="0.9" color="0xFFFF00" style="solid"/> <!-- Symbol for Find Result as Point --> <esri:SimpleMarkerSymbol id="smsFind" alpha="0.9" color="0xFFFF00" size="11" style="square"> <esri:SimpleLineSymbol color="0x000000"/> </esri:SimpleMarkerSymbol> <!-- Symbol for Find Result as Polygon --> <esri:SimpleFillSymbol id="sfsFind" alpha="0.7" color="0xFFFF00"/> <!-- Find Task --> <esri:FindTask id="findTask" executeComplete="executeCompleteHandler(event)" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/> <esri:FindParameters id="myFindParams" contains="true" layerIds="[0,1,2]" outSpatialReference="{map.spatialReference}" returnGeometry="true" searchFields="[FID]" searchText="{fText.text}"/> </fx:Declarations> <s:BorderContainer width="100%" height="40" backgroundColor="0xDDDDFF"> <s:layout> <s:HorizontalLayout horizontalAlign="center" verticalAlign="middle"/> </s:layout> <s:Label text="Search for FID:"/> <s:TextInput id="fText" enter="doFind()" maxWidth="400" text="0"/> <s:Button click="doFind()" label="Find"/> </s:BorderContainer> <s:Label id="resultSummary" height="15"/> <mx:VDividedBox width="100%" height="100%"> <esri:Map id="map"> <esri:extent> <esri:Extent xmin="-126" ymin="24" xmax="-67" ymax="50"> <esri:SpatialReference wkid="4326"/> </esri:Extent> </esri:extent> <esri:ArcGISDynamicMapServiceLayer url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/> <esri:GraphicsLayer id="myGraphicsLayer"/> </esri:Map> <mx:DataGrid width="100%" height="40%" dataProvider="{findTask.executeLastResult}"> <mx:columns> <mx:DataGridColumn width="70" dataField="layerId" headerText="Layer ID"/> <mx:DataGridColumn dataField="layerName" headerText="Layer Name"/> <mx:DataGridColumn dataField="foundFieldName" headerText="Found Field Name"/> <mx:DataGridColumn dataField="value" headerText="Found Field Value"/> </mx:columns> </mx:DataGrid> </mx:VDividedBox> </s:Application> P.S. SDK 4.6, ArcGIS API for FLEX 3.2
... View more
04-17-2013
02:36 AM
|
0
|
0
|
208
|
POST
|
For new geocoder component, you must listen its events, to access results. <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="Geocoder Component Sample">
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.events.GeocoderEvent;
import com.esri.ags.geometry.Geometry;
import com.esri.ags.symbols.SimpleFillSymbol;
import com.esri.ags.symbols.SimpleMarkerSymbol;
import com.esri.ags.symbols.Symbol;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
protected function onGeocoderResultSelected(event:GeocoderEvent):void
{
var symbol:Symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 24, 0xFF0000);
var gr:Graphic = new Graphic(event.result.geometry, symbol);
gr.toolTip = event.result.label + "\n(" + event.result.sourceName + ")";
gLayer.clear();
gLayer.add(gr);
}
protected function onGeocoderFault(event:FaultEvent):void
{
Alert.show(event.message.toString(), "Geocoder fault");
}
protected function onGeocoderSearchComplete(event:GeocoderEvent):void
{
// do something
}
]]>
</fx:Script>
<esri:Map id="map">
<esri:extent>
<esri:WebMercatorExtent xmin="-20119163" ymin="1160734" xmax="-1333999" ymax="10416341"/>
</esri:extent>
<esri:ArcGISTiledMapServiceLayer/>
<esri:GraphicsLayer id="gLayer" />
</esri:Map>
<esri:Geocoder width="300" height="30"
top="20"
horizontalCenter="0"
map="{map}"
resultSelected="onGeocoderResultSelected(event)"
fault="onGeocoderFault(event)"
searchComplete="onGeocoderSearchComplete(event)" />
</s:Application> P.S. SDK 4.6, API 3.2 release 19.03.2013
... View more
04-16-2013
11:16 PM
|
0
|
0
|
217
|
POST
|
This example "Geocode an address" and function onResult(), where map pans to first candidate in results. the same sample with some changes and function showCandidateOnMap() <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:esri="http://www.esri.com/2008/ags">
<s:layout>
<s:VerticalLayout paddingBottom="15"
paddingLeft="10"
paddingRight="10"
paddingTop="15"/>
</s:layout>
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.events.LocatorEvent;
import com.esri.ags.events.MapMouseEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.tasks.supportClasses.AddressCandidate;
import com.esri.ags.tasks.supportClasses.AddressToLocationsParameters;
import com.esri.ags.utils.WebMercatorUtil;
import flashx.textLayout.conversion.TextConverter;
import mx.collections.ArrayList;
import mx.controls.Alert;
import mx.rpc.AsyncResponder;
import mx.utils.StringUtil;
import spark.events.GridEvent;
[Bindable]
private var lastFoundAddreses:ArrayList = new ArrayList();
private function onMapClick(event:MapMouseEvent):void
{
locateTask.locationToAddress(event.mapPoint, 100);
}
private function onLocationToAddressComplete(event:LocatorEvent):void
{
var candidate:AddressCandidate = event.addressCandidate;
if (candidate)
{
showCandidateOnMap(candidate);
}
else
{
Alert.show("This location does not have a known street address.");
}
}
private function doFind():void
{
var params:AddressToLocationsParameters = new AddressToLocationsParameters();
params.address = { "StreetName": onelineaddress.text, City: "Helsinki", Country: "Finland" };
params.outFields = ["*"]; //all
// Use outFields to get back extra information
// The exact fields available depends on the specific Locator used.
locateTask.outSpatialReference = myMap.spatialReference;
locateTask.addressToLocations(params, new AsyncResponder(onResultFunction, onFaultFunction));
function onResultFunction(candidates:Array, token:Object = null):void
{
if (candidates.length > 0)
{
lastFoundAddreses.removeAll();
var infoHtmlString:String = "";
for (var indexer:int = 0; indexer < candidates.length; indexer++)
{
var nextCandidate:AddressCandidate = candidates[indexer];
if (nextCandidate && nextCandidate.address && nextCandidate.location && nextCandidate.score && nextCandidate.score > 0)
{
var obj:Object = new Object();
obj.candidate = nextCandidate;
obj.address = StringUtil.substitute("{0}; score is >>> {1}", nextCandidate.address.toString(), nextCandidate.score.toString());
obj.coords = StringUtil.substitute("X={0}, Y={1}", nextCandidate.location.x.toFixed(0), nextCandidate.location.y.toFixed(0));
obj.geometry = nextCandidate.location;
lastFoundAddreses.addItem(obj);
}
}
var addressCandidate:AddressCandidate = candidates[0];
showCandidateOnMap(addressCandidate);
}
else
{
Alert.show("Sorry, couldn't find a location for this address"
+ "\nAddress: " + onelineaddress.text);
};
}
function onFaultFunction(info:Object, token:Object = null):void
{
Alert.show("Failure: \n" + info.toString());
}
}
private function showCandidateOnMap(candidate:AddressCandidate):void
{
var address:Object = candidate.address;
var candidateMapPoint:MapPoint = candidate.location;
if (candidateMapPoint.spatialReference.wkid != myMap.spatialReference.wkid)
{
candidateMapPoint = WebMercatorUtil.geographicToWebMercator(candidate.location) as MapPoint;
}
var myGraphic:Graphic = new Graphic(candidateMapPoint, mySymbol, address);
myGraphic.id = "graphic";
myGraphicsLayer.clear();
myGraphicsLayer.add(myGraphic);
var htmlText:String = "<b>Address:</b><br>";
if (address.hasOwnProperty("Address"))
{
htmlText += address.Address.toString() + "<br>";
}
else if (address.hasOwnProperty("StreetName"))
{
htmlText += address.StreetName.toString() + "<br>";
}
else
{
htmlText += address.toString() + "<br>";
}
textArea.textFlow = TextConverter.importToFlow(htmlText, TextConverter.TEXT_FIELD_HTML_FORMAT);
myMap.infoWindow.label = "Geocode an Address";
myMap.infoWindow.show(myGraphic.geometry as MapPoint);
myMap.centerAt(myGraphic.geometry as MapPoint);
if (lastFoundAddreses != null)
{
var updatedLastFoundAddress:ArrayList = new ArrayList();
for (var ind:int = 0; ind < lastFoundAddreses.length; ind++)
{
var obj:Object = lastFoundAddreses.getItemAt(ind);
var objPoint:MapPoint = obj.geometry;
var dX:Number = objPoint.x-candidateMapPoint.x;
var dY:Number = objPoint.y-candidateMapPoint.y;
var half:Number = 0.5;
var distance:Number = Math.pow((Math.pow(dX, 2) + Math.pow(dY, 2)), half);
var distanceToPoint:String = StringUtil.substitute(" ~ {0} m", distance.toFixed(0));
var updatedObj:Object = new Object();
updatedObj.address = obj.address;
updatedObj.distance = obj.distance;
updatedObj.distance2 = distanceToPoint;
updatedObj.geometry = obj.geometry;
updatedObj.coords = obj.coords;
updatedObj.candidate = obj.candidate;
updatedLastFoundAddress.addItem(updatedObj);
}
lastFoundAddreses.removeAll();
lastFoundAddreses.addAll(updatedLastFoundAddress);
}
}
protected function myMap_mouseMoveHandler(event:MouseEvent):void
{
var currentMousePoint:MapPoint = myMap.toMapFromStage(event.stageX, event.stageY);
if (lastFoundAddreses != null)
{
var updatedLastFoundAddress:ArrayList = new ArrayList();
for (var ind:int = 0; ind < lastFoundAddreses.length; ind++)
{
var obj:Object = lastFoundAddreses.getItemAt(ind);
var objPoint:MapPoint = obj.geometry;
var dX:Number = objPoint.x-currentMousePoint.x;
var dY:Number = objPoint.y-currentMousePoint.y;
var half:Number = 0.5;
var distance:Number = Math.pow((Math.pow(dX, 2) + Math.pow(dY, 2)), half);
var updatedDistance:String = StringUtil.substitute("~ {0} m", distance.toFixed(0));
var updatedObj:Object = new Object();
updatedObj.address = obj.address;
updatedObj.geometry = obj.geometry;
updatedObj.coords = obj.coords;
updatedObj.distance2 = obj.distance2;
updatedObj.distance = updatedDistance;
updatedObj.candidate = obj.candidate;
updatedLastFoundAddress.addItem(updatedObj);
}
lastFoundAddreses.removeAll();
lastFoundAddreses.addAll(updatedLastFoundAddress);
}
}
protected function lastFoundGrid_gridClickHandler(event:GridEvent):void
{
if (lastFoundGrid.selectedItem != null)
{
var selectedCandidate:AddressCandidate = lastFoundGrid.selectedItem.candidate as AddressCandidate;
if (selectedCandidate != null)
{
showCandidateOnMap(selectedCandidate);
}
}
}
]]>
</fx:Script>
<fx:Declarations>
<esri:Locator id="locateTask"
concurrency="last"
locationToAddressComplete="onLocationToAddressComplete(event)"
url="http://tasks.arcgisonline.com/ArcGIS/rest/services/Locators/TA_Address_EU/GeocodeServer"/>
<esri:SimpleMarkerSymbol id="mySymbol"
alpha="0.5"
color="0xFF0000"
size="19"
style="circle">
<esri:SimpleLineSymbol width="2"/>
</esri:SimpleMarkerSymbol>
</fx:Declarations>
<s:Label fontSize="12"
fontWeight="bold"
text="Click on map to obtain the address of a location."/>
<esri:Map id="myMap"
mapClick="onMapClick(event)"
mouseMove="myMap_mouseMoveHandler(event)"
openHandCursorVisible="false">
<esri:extent>
<esri:Extent xmin="2730524.567128713" xmax="2826835.222767905" ymin="8425522.38792159" ymax="8477346.69309887"/>
</esri:extent>
<esri:infoWindowContent>
<s:TextArea id="textArea"
editable="false"
heightInLines="4"/>
</esri:infoWindowContent>
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
<esri:GraphicsLayer id="myGraphicsLayer"/>
</esri:Map>
<s:Panel width="100%"
top="5"
horizontalCenter="0"
title="Find an address">
<s:layout>
<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
</s:layout>
<!-- Single line geocode -->
<s:TextInput id="onelineaddress"
width="95%"
enter="doFind()"
text="Koskelantie 5"/>
<s:Button click="doFind()" label="Find Address"/>
<s:DataGrid id="lastFoundGrid"
width="100%"
gridClick="lastFoundGrid_gridClickHandler(event)"
dataProvider="{lastFoundAddreses}">
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="address" headerText="Address"/>
<s:GridColumn dataField="distance" headerText="Distance to cursor" width="200"/>
<s:GridColumn dataField="distance2" headerText="Distance to last clicked" width="200"/>
<s:GridColumn dataField="coords" headerText="Coordinates" width="200"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>
</s:Panel>
</s:Application>
P.S. SDK 4.6, API 3.1 release 12.12.2012
... View more
04-15-2013
03:28 AM
|
0
|
0
|
217
|
POST
|
To show all visible by default layers: dynamicLayer.visibleLayers = null; To hide all layers set empty collection: dynamicLayer.visibleLayers = new ArrayCollection(); To show all layers: dynamicLayer.visibleLayers = new ArrayCollection([array of all layers id's]);; example: <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags">
<s:layout>
<s:HorizontalLayout paddingBottom="10"
paddingLeft="10"
paddingRight="10"
paddingTop="10"/>
</s:layout>
<fx:Script>
<![CDATA[
import com.esri.ags.events.LayerEvent;
import com.esri.ags.layers.supportClasses.LayerInfo;
import mx.collections.ArrayCollection;
[Bindable]
private var layersList:ArrayCollection = null;
[Bindable]
private var visibleLayers:ArrayCollection = null;
protected function onShowAllClick(event:MouseEvent):void
{
visibleLayers = null;
dlayer.refresh();
}
protected function onHideAllClick(event:MouseEvent):void
{
visibleLayers = new ArrayCollection();
dlayer.refresh();
}
protected function onShowSelectedClick(event:MouseEvent):void
{
var selectedLayer:LayerInfo = ddlLayers.selectedItem as LayerInfo;
visibleLayers = new ArrayCollection([selectedLayer.layerId]);
dlayer.refresh();
}
protected function onLayerLoad(event:LayerEvent):void
{
layersList = new ArrayCollection(dlayer.layerInfos);
ddlLayers.selectedIndex = 0;
}
]]>
</fx:Script>
<s:Panel width="100%"
height="100%"
title="Map">
<esri:Map id="map">
<esri:extent>
<esri:Extent id="lowerManhattan"
xmin="-8239000" ymin="4968000" xmax="-8235000" ymax="4971000">
<esri:SpatialReference wkid="102100"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISTiledMapServiceLayer name="Base layer - tiled"
url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
<esri:ArcGISDynamicMapServiceLayer id="dlayer"
name="Demographics layer - dynamic"
visibleLayers="{visibleLayers}"
load="onLayerLoad(event)"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer" />
</esri:Map>
</s:Panel>
<s:Panel width="300"
height="100%"
title="Filters">
<s:VGroup paddingBottom="5"
paddingLeft="5"
paddingRight="5"
paddingTop="5"
gap="10">
<s:Button id="btnShowAll"
label="Show all layers"
click="onShowAllClick(event)"/>
<s:DropDownList id="ddlLayers"
width="100%"
dataProvider="{layersList}"
labelField="name" />
<s:Button id="btnShowSelected"
label="Show selected layer"
click="onShowSelectedClick(event)"/>
<s:Button id="btnHideAll"
label="Hide all layers"
click="onHideAllClick(event)"/>
</s:VGroup>
</s:Panel>
</s:Application>
... View more
04-11-2013
03:15 AM
|
0
|
0
|
220
|
POST
|
Try to extend FeatureLayer package ee.alphagis.layers { import com.esri.ags.events.LayerEvent; import com.esri.ags.layers.FeatureLayer; public class MyFeatureLayer extends FeatureLayer { public function MyFeatureLayer(url:String=null, proxyURL:String=null, token:String=null) { super(url, proxyURL, token); } public function setFilterFunction(func:Function):void { $graphicProvider.filterFunction = func; $graphicProvider.refresh(); dispatchEvent(new LayerEvent(LayerEvent.UPDATE_END, this, null, true)); } } } <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags" xmlns:layers="ee.alphagis.layers.*"> <s:layout> <s:HorizontalLayout gap="5" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" /> </s:layout> <fx:Script> <![CDATA[ import com.esri.ags.Graphic; import com.esri.ags.events.GraphicEvent; import com.esri.ags.events.LayerEvent; import mx.collections.ArrayCollection; [Bindable] private var totalGraphicsShown:String = ""; private var filterParam:int; protected function onGraphicAdd(event:GraphicEvent):void { event.graphic.toolTip = "FIPS: " + event.graphic.attributes.FIPS + "\n" + "POP2000: " + event.graphic.attributes.POP2000; } protected function onFilterClick(event:MouseEvent):void { var bt:Button = Button(event.target); switch (bt.id) { case bt100.id: filterParam = 100; break; case bt300.id: filterParam = 300; break; case bt500.id: filterParam = 500; break; case bt700.id: filterParam = 700; break; case bt900.id: filterParam = 900; break; } fLayer.setFilterFunction(providerFilterFunction); } protected function onClearFilters(event:MouseEvent):void { fLayer.setFilterFunction(null); } protected function providerFilterFunction(item:Object):Boolean { var isFiltered:Boolean = false; var gr:Graphic = Graphic(item); if (int(gr.attributes.POP2000) < filterParam) { isFiltered = true; } return isFiltered; } protected function onLayerUpdateEnd(event:LayerEvent):void { totalGraphicsShown = "Total graphics shown: " + (fLayer.graphicProvider as ArrayCollection).length; } ]]> </fx:Script> <fx:Declarations> <esri:SimpleMarkerSymbol id="symbol1" alpha="0.7" color="0xFF0000" size="6" style="triangle"/> <esri:SimpleMarkerSymbol id="symbol2" alpha="0.7" color="0xFF0000" size="10" style="triangle"/> <esri:SimpleMarkerSymbol id="symbol3" alpha="0.7" color="0xFF0000" size="16" style="triangle"/> <esri:SimpleMarkerSymbol id="symbol4" alpha="0.7" color="0xFF0000" size="22" style="triangle"/> <esri:SimpleMarkerSymbol id="symbol5" alpha="0.7" color="0xFF0000" size="26" style="triangle"/> </fx:Declarations> <s:Panel width="100%" height="100%" title="Map"> <esri:Map> <esri:extent> <esri:Extent id="lowerManhattan" xmin="-8239000" ymin="4968000" xmax="-8235000" ymax="4971000"> <esri:SpatialReference wkid="102100"/> </esri:Extent> </esri:extent> <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/> <layers:MyFeatureLayer id="fLayer" graphicAdd="onGraphicAdd(event)" updateEnd="onLayerUpdateEnd(event)" outFields="[FIPS,POP2000]" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/0"> <layers:renderer> <esri:ClassBreaksRenderer field="POP2000"> <esri:ClassBreakInfo maxValue="61" symbol="{symbol1}"/> <esri:ClassBreakInfo maxValue="264" minValue="62" symbol="{symbol2}"/> <esri:ClassBreakInfo maxValue="759" minValue="265" symbol="{symbol3}"/> <esri:ClassBreakInfo maxValue="1900" minValue="760" symbol="{symbol4}"/> <esri:ClassBreakInfo minValue="1901" symbol="{symbol5}"/> </esri:ClassBreaksRenderer> </layers:renderer> </layers:MyFeatureLayer> </esri:Map> </s:Panel> <s:Panel width="300" height="100%" title="Filters"> <s:VGroup paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" gap="10"> <s:Button id="bt100" label="Filter POP2000 less 100" click="onFilterClick(event)"/> <s:Button id="bt300" label="Filter POP2000 less 300" click="onFilterClick(event)"/> <s:Button id="bt500" label="Filter POP2000 less 500" click="onFilterClick(event)"/> <s:Button id="bt700" label="Filter POP2000 less 700" click="onFilterClick(event)"/> <s:Button id="bt900" label="Filter POP2000 less 900" click="onFilterClick(event)"/> <s:Button label="Clear filters" click="onClearFilters(event)"/> <s:Label text="{totalGraphicsShown}" /> </s:VGroup> </s:Panel> </s:Application> Good luck. UPD: API version 3.1 release 12/12/2012
... View more
04-11-2013
02:43 AM
|
0
|
0
|
298
|
POST
|
This forum search: Channel.Security.Error as start point.
... View more
04-09-2013
03:10 AM
|
0
|
0
|
161
|
POST
|
ArcGIS API -> Getting Started section Requirements has all needed links FlexViewer sources link is on FlexViewer main page FlexViewer -> Getting started for developers
... View more
04-03-2013
05:05 AM
|
0
|
0
|
158
|
Title | Kudos | Posted |
---|---|---|
1 | 12-03-2017 11:25 PM | |
1 | 10-06-2016 11:49 PM | |
2 | 06-07-2012 01:38 AM | |
1 | 06-03-2012 09:42 PM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|