Select to view content in your preferred language

Please help extending com.esri.ags.symbols.LineSymbol for flex-API

935
1
Jump to solution
04-26-2012 02:06 AM
omega_cancer
Frequent Contributor
I want to create an extended line symbol so that I had more control over it to draw line and other shapes in it. I can accomplish it by extending it. I was very pleased to see the example to extend com.esri.ags.symbols.Symbol provided by Mansour Raad at his blog http://thunderheadxpler.blogspot.com/2009/02/ground-overlays-on-maps.html. The code can be accessed here http://thunderhead.esri.com/readonlyurl/OverlayEditor.zip.

I want to extend the lineSymbol, If anyone got any example or any clue. Any help would be highly appreciated.

I had also posted this question at http://forums.arcgis.com/threads/56265-Please-help-extending-com.esri.ags.symbols.LineSymbol-for-fle...
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
RobertScheitlin__GISP
MVP Emeritus
Omega Cancer,

  Here is a very small sample of extending the SimpleFillSymbol. The big thing is what you do in the override of the draw function:

package com.calhoun.county {     import com.esri.ags.Map;     import com.esri.ags.geometry.Geometry;     import com.esri.ags.geometry.MapPoint;     import com.esri.ags.geometry.Polygon;     import com.esri.ags.symbols.SimpleFillSymbol;     import com.esri.ags.symbols.SimpleLineSymbol;     import com.esri.ags.symbols.Symbol;          import flash.display.Sprite;     import flash.events.Event;          public class VertexFillSymbol extends SimpleFillSymbol     {         private var m_alpha:Number = 1;                  public function VertexFillSymbol(alpha:Number=0.5, color:uint=0x000000, style:String="solid", outline:SimpleLineSymbol=null)         {             super();         }          override public function draw(sprite:Sprite, geometry:Geometry, attributes:Object, map:Map):void         {             super.draw(sprite, geometry, attributes, map);             var poly:Polygon = geometry as Polygon;             for (var i2:int = 0; i2 < poly.rings.length; i2++)             {                 for (var j1:int = poly.rings[i2].length - 1; j1 >= 0; j1--)                 {                     sprite.graphics.lineStyle(0.5, 0, 1);                     var mp2:MapPoint = poly.getPoint(i2,j1) as MapPoint;                     if(j1 == 0){                         sprite.graphics.beginFill(0x00ff00, 1);                         sprite.graphics.drawCircle(toScreenX(map, mp2.x) - sprite.x, toScreenY(map, mp2.y) - sprite.y, 8);                     }else{                         sprite.graphics.beginFill(0xff0000, 1);                         sprite.graphics.drawRect(toScreenX(map, mp2.x) - sprite.x - 6, toScreenY(map, mp2.y) - sprite.y - 6, 12, 12);                     }                                          sprite.graphics.endFill();                 }             }         }     } }


Don't forget to click the Mark as answer check on this post and to click the top arrow (promote).
Follow the steps as shown in the below graphic:

View solution in original post

0 Kudos
1 Reply
RobertScheitlin__GISP
MVP Emeritus
Omega Cancer,

  Here is a very small sample of extending the SimpleFillSymbol. The big thing is what you do in the override of the draw function:

package com.calhoun.county {     import com.esri.ags.Map;     import com.esri.ags.geometry.Geometry;     import com.esri.ags.geometry.MapPoint;     import com.esri.ags.geometry.Polygon;     import com.esri.ags.symbols.SimpleFillSymbol;     import com.esri.ags.symbols.SimpleLineSymbol;     import com.esri.ags.symbols.Symbol;          import flash.display.Sprite;     import flash.events.Event;          public class VertexFillSymbol extends SimpleFillSymbol     {         private var m_alpha:Number = 1;                  public function VertexFillSymbol(alpha:Number=0.5, color:uint=0x000000, style:String="solid", outline:SimpleLineSymbol=null)         {             super();         }          override public function draw(sprite:Sprite, geometry:Geometry, attributes:Object, map:Map):void         {             super.draw(sprite, geometry, attributes, map);             var poly:Polygon = geometry as Polygon;             for (var i2:int = 0; i2 < poly.rings.length; i2++)             {                 for (var j1:int = poly.rings[i2].length - 1; j1 >= 0; j1--)                 {                     sprite.graphics.lineStyle(0.5, 0, 1);                     var mp2:MapPoint = poly.getPoint(i2,j1) as MapPoint;                     if(j1 == 0){                         sprite.graphics.beginFill(0x00ff00, 1);                         sprite.graphics.drawCircle(toScreenX(map, mp2.x) - sprite.x, toScreenY(map, mp2.y) - sprite.y, 8);                     }else{                         sprite.graphics.beginFill(0xff0000, 1);                         sprite.graphics.drawRect(toScreenX(map, mp2.x) - sprite.x - 6, toScreenY(map, mp2.y) - sprite.y - 6, 12, 12);                     }                                          sprite.graphics.endFill();                 }             }         }     } }


Don't forget to click the Mark as answer check on this post and to click the top arrow (promote).
Follow the steps as shown in the below graphic:
0 Kudos