Projecting all points in array collection

561
2
Jump to solution
02-23-2012 12:42 AM
sherlytobias
New Contributor
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
  xmlns:s="library://ns.adobe.com/flex/spark"
  title="Map"
  xmlns:esri="http://www.esri.com/2008/ags"
  xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">

<fx:Declarations>
  <s:HTTPService id="srv" url="xml/properties.xml" result="resultHandler(event)"/>
  <esri:GeometryService id="geometryService"
         concurrency="multiple"
         projectComplete="projectCompleteHandler(event)"
         url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>
</fx:Declarations>

<fx:Script>
<![CDATA[
  import com.esri.ags.Graphic;
  import com.esri.ags.SpatialReference;
  import com.esri.ags.events.GeometryServiceEvent;
  import com.esri.ags.geometry.Geometry;
  import com.esri.ags.geometry.MapPoint;
  import com.esri.ags.layers.GraphicsLayer;
 
  import mx.collections.ArrayCollection;
  import mx.rpc.events.ResultEvent;
  [Bindable]
  private var watdata:ArrayCollection;
  private var myObject:Object;
  private var latlong:Number;
  private var stName:String;
  private var point:Geometry;
  private var attrib:String;
  private var graphicsLayer:GraphicsLayer;
 
  private function init():void{
   graphicsLayer = new GraphicsLayer;
   graphicsLayer.name = "pointgra";
   map.addLayer(graphicsLayer);
  
   srv.send();
  }
 
  private function resultHandler(event:ResultEvent):void{
   watdata = event.result.properties.data;
  
   var graphics:Array = [];
   for each (myObject in data) {
    latlong = Number(myObject.point.toString());
    stName = myObject.name.toString();
   
    attrib = {sName:stName};
    point = new MapPoint(latlong, new SpatialReference(102100));
   
    var uGraphic:Graphic = new Graphic (point, attrib);
    graphics.push(uGraphic);
   }
    var outSR:SpatialReference = new SpatialReference(3857);
    geometryService.project([graphics], outSR);  
  }
 
  protected function projectCompleteHandler(event:GeometryServiceEvent):void
  {
   var graphics:Array = event.graphics;
   graphicsLayer.graphicProvider = graphics;
   graphicsLayer.addEventListener(TouchEvent.TOUCH_OVER, tover);
   graphicsLayer.addEventListener(TouchEvent.TOUCH_OUT, tout);
  }
  private function tover(event:TouchEvent):void{
   var graphic:Graphic = event.target as Graphic;
   graphic.toolTip = graphic.attributes.sName.toString();
  }
  private function tout(event:TouchEvent):void{
   var graphic:Graphic = event.target as Graphic;
  }
]]>
</fx:Script>

<s:navigationContent>
  <s:Button width="75" height="50" click="navigator.popView()" icon="assets/back.png"/>
</s:navigationContent>

<esri:Map id="map" width="100%" height="100%" logoVisible="true"
     navigationClass="{null}" zoomSliderVisible="true" openHandCursorVisible="false" scale="50000000">
  <esri:ArcGISTiledMapServiceLayer
   url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>
  <esri:extent>
   <esri:Extent xmin="-467799" ymin="5253018" xmax="2171419" ymax="6627661"/>
  </esri:extent>
</esri:Map>
</s:View>



can someone tell me what seems to be the problem in this codes? please
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Emeritus
Sherly,

   You do not get a graphic back from a project operation, you get an array of geometries.

<?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"         xmlns:s="library://ns.adobe.com/flex/spark"         title="Map"         xmlns:esri="http://www.esri.com/2008/ags"         xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">          <fxeclarations>         <s:HTTPService id="srv" url="xml/properties.xml" result="resultHandler(event)"/>         <esri:GeometryService id="geometryService"                               url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>     </fxeclarations>          <fx:Script>         <=!=[=C=D=A=T=A=[             import com.esri.ags.Graphic;             import com.esri.ags.SpatialReference;             import com.esri.ags.events.GeometryServiceEvent;             import com.esri.ags.geometry.Geometry;             import com.esri.ags.geometry.MapPoint;             import com.esri.ags.layers.GraphicsLayer;                          import mx.collections.ArrayCollection;             import mx.rpc.events.ResultEvent;             [Bindable]             private var watdata:ArrayCollection;             private var myObject:Object;             private var latlong:Number;             private var stName:String;             private var point:Geometry;             private var attrib:String;             private var graphicsLayer:GraphicsLayer;                          private function init():void{                 graphicsLayer = new GraphicsLayer;                 graphicsLayer.name = "pointgra";                 map.addLayer(graphicsLayer);                                  srv.send();             }                          private function resultHandler(event:ResultEvent):void{                 watdata = event.result.properties.data;                 var gArr:Array = [];                 var graphics:Array = [];                 for each (myObject in data) {                     latlong = Number(myObject.point.toString());                     stName = myObject.name.toString();                                          attrib = {sName:stName};                     point = new MapPoint(latlong, new SpatialReference(102100));                                          var uGraphic:Graphic = new Graphic (point, attrib);                     gArr.push(point);                     graphics.push(uGraphic);                 }                 var outSR:SpatialReference = new SpatialReference(3857);                 geometryService.project(gArr, outSR, new AsyncResponder(projectCompleteHandler, null, graphics));             }                          protected function projectCompleteHandler(result:Object, token:Object):void             {                 var pRslts:Array = result as Array;                 for (var pg:int = 0; pg < pRslts.length; pg++){                     var pGeom:Geometry = pRslts[pg];                     token[pg].geometry = pGeom;                 }                 graphicsLayer.graphicProvider = token;                 graphicsLayer.addEventListener(TouchEvent.TOUCH_OVER, tover);                 graphicsLayer.addEventListener(TouchEvent.TOUCH_OUT, tout);             }                          private function tover(event:TouchEvent):void{                 var graphic:Graphic = event.target as Graphic;                 graphic.toolTip = graphic.attributes.sName.toString();             }             private function tout(event:TouchEvent):void{                 var graphic:Graphic = event.target as Graphic;             }         ]=]=>     </fx:Script>          <s:navigationContent>         <s:Button width="75" height="50" click="navigator.popView()" icon="assets/back.png"/>     </s:navigationContent>          <esri:Map id="map" width="100%" height="100%" logoVisible="true"               navigationClass="{null}" zoomSliderVisible="true" openHandCursorVisible="false" scale="50000000">         <esri:ArcGISTiledMapServiceLayer             url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>         <esri:extent>             <esri:Extent xmin="-467799" ymin="5253018" xmax="2171419" ymax="6627661"/>         </esri:extent>     </esri:Map> </s:View>


Don't forget to click the Mark as answer check and to click the top arrow (promote) as shown below:

View solution in original post

0 Kudos
2 Replies
RobertScheitlin__GISP
MVP Emeritus
Sherly,

   You do not get a graphic back from a project operation, you get an array of geometries.

<?xml version="1.0" encoding="utf-8"?> <s:View xmlns:fx="http://ns.adobe.com/mxml/2009"         xmlns:s="library://ns.adobe.com/flex/spark"         title="Map"         xmlns:esri="http://www.esri.com/2008/ags"         xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()">          <fxeclarations>         <s:HTTPService id="srv" url="xml/properties.xml" result="resultHandler(event)"/>         <esri:GeometryService id="geometryService"                               url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>     </fxeclarations>          <fx:Script>         <=!=[=C=D=A=T=A=[             import com.esri.ags.Graphic;             import com.esri.ags.SpatialReference;             import com.esri.ags.events.GeometryServiceEvent;             import com.esri.ags.geometry.Geometry;             import com.esri.ags.geometry.MapPoint;             import com.esri.ags.layers.GraphicsLayer;                          import mx.collections.ArrayCollection;             import mx.rpc.events.ResultEvent;             [Bindable]             private var watdata:ArrayCollection;             private var myObject:Object;             private var latlong:Number;             private var stName:String;             private var point:Geometry;             private var attrib:String;             private var graphicsLayer:GraphicsLayer;                          private function init():void{                 graphicsLayer = new GraphicsLayer;                 graphicsLayer.name = "pointgra";                 map.addLayer(graphicsLayer);                                  srv.send();             }                          private function resultHandler(event:ResultEvent):void{                 watdata = event.result.properties.data;                 var gArr:Array = [];                 var graphics:Array = [];                 for each (myObject in data) {                     latlong = Number(myObject.point.toString());                     stName = myObject.name.toString();                                          attrib = {sName:stName};                     point = new MapPoint(latlong, new SpatialReference(102100));                                          var uGraphic:Graphic = new Graphic (point, attrib);                     gArr.push(point);                     graphics.push(uGraphic);                 }                 var outSR:SpatialReference = new SpatialReference(3857);                 geometryService.project(gArr, outSR, new AsyncResponder(projectCompleteHandler, null, graphics));             }                          protected function projectCompleteHandler(result:Object, token:Object):void             {                 var pRslts:Array = result as Array;                 for (var pg:int = 0; pg < pRslts.length; pg++){                     var pGeom:Geometry = pRslts[pg];                     token[pg].geometry = pGeom;                 }                 graphicsLayer.graphicProvider = token;                 graphicsLayer.addEventListener(TouchEvent.TOUCH_OVER, tover);                 graphicsLayer.addEventListener(TouchEvent.TOUCH_OUT, tout);             }                          private function tover(event:TouchEvent):void{                 var graphic:Graphic = event.target as Graphic;                 graphic.toolTip = graphic.attributes.sName.toString();             }             private function tout(event:TouchEvent):void{                 var graphic:Graphic = event.target as Graphic;             }         ]=]=>     </fx:Script>          <s:navigationContent>         <s:Button width="75" height="50" click="navigator.popView()" icon="assets/back.png"/>     </s:navigationContent>          <esri:Map id="map" width="100%" height="100%" logoVisible="true"               navigationClass="{null}" zoomSliderVisible="true" openHandCursorVisible="false" scale="50000000">         <esri:ArcGISTiledMapServiceLayer             url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/>         <esri:extent>             <esri:Extent xmin="-467799" ymin="5253018" xmax="2171419" ymax="6627661"/>         </esri:extent>     </esri:Map> </s:View>


Don't forget to click the Mark as answer check and to click the top arrow (promote) as shown below:
0 Kudos
sherlytobias
New Contributor
thank you so much for the reply. im getting an Error #1010: A term is undefined and has no properties. in using this code:
 private function init():void
   {
    graphicsLayer = new GraphicsLayer;
    map.addLayer(graphicsLayer);
    srv.send();
   }
   
   private function resultHandler(event:ResultEvent):void
   {
   myXML = event.result.myXML.entry;
      
   var gArr:Array = [];
   var graphics:Array = [];
   for each (myObject in data) {
    latlong = Number(myObject.point.toString());   
    myPoint = new MapPoint(latlong);
    
    var uGraphic:Graphic = new Graphic (myPoint);
    gArr.push(myPoint);
    graphics.push(uGraphic);
   }

   var outSR:SpatialReference = new SpatialReference(3857);
   geometryService.project(gArr, outSR, new AsyncResponder(projectCompleteHandler, null, graphics));
   }
   
   protected function projectCompleteHandler(result:Object, token:Object):void
   {
    var pRslts:Array = result as Array;
    for (var pg:int = 0; pg < pRslts.length; pg++){
     var pGeom:Geometry = pRslts[pg];
     token[pg].geometry = pGeom;
    }
    graphicsLayer.graphicProvider = token;
   }
   

can you tell me what is my mistake? i kindly ask for your help. please..
0 Kudos