您的位置:首页 > 其它

arcgis for flex 学习笔记(一)

2014-06-27 20:55 288 查看

初步认识

  地图由图层、要素、样式等组成。地图上有N个图层,图层上有N个要素,每个要素可以存放点、线、面等,每个要素可以设置样式,如果显示图片、或文字均可以先创建一个mxml组件,然后设置到要素上。

  面和线都是由点组成的。

添加点

  1.首先初始化图层,GraphicsLayer。

  2.获取坐标点,MapPoint。

  3.创建要素,Graphic。

  4.设置样式 Symbol。

  5.添加要素至Layer,即是第一步创建的图层。

添加线

  在添加点的基础上多了一个步骤。

  获取到多个点,可以实例化一个线对象,将线添加到点中。

//构造线对象
var pline:Polyline=new Polyline();

//添加点数据到线
pline.addPath(xydata);


  其他步骤相同,xydata是一个MapPoint数组。

添加面

  跟添加线的逻辑一样,面也是由n个点组成。核心代码如下:

var area:Polygon=new Polygon();
area.addRing(xydataArea);


图层

  图层按照先后添加顺序,好比html的zindex属性。最先添加的属性在下方。如果说,同时添加一个面和线,而线要做点击事件,那么线所处的图层应该在面之上。

高亮闪烁

  创建一个symbolToggleEffect对象,设置其样式,在MouseOver事件中,开始动画,MouseOut事件中结束动画。

private static var symbolToggleEffect:SimpleFiltersToggleEffect; //高亮对象
private static var filterMarker:GlowFilter=null; //高亮样式
private static var simfilterArray:Array=[]; //过滤对象数组

public static function DrawVehAreaOver(evt:MouseEvent):void
{
if (symbolToggleEffect)
symbolToggleEffect.end();

var targetGarphic:Graphic=evt.currentTarget as Graphic;

//获取图层
var layer:GraphicsLayer=GetAreaLayer();

//找到缓冲区图层,存在则隐藏
var currArea:Graphic=FindGraphicByAttr(layer, "AREAID", targetGarphic.attributes.USERID);

if (currArea)
{
currArea.visible=true;

//开始高亮
if (!symbolToggleEffect)
{
if (!filterMarker)
{
InitSyle();
}
symbolToggleEffect=new SimpleFiltersToggleEffect(currArea, null, simfilterArray, 500);
}

symbolToggleEffect.play();
}
}

//昂是初始化
private static function InitSyle():void
{
//高亮样式
if (!filterMarker)
{
var objselectedHouse:Object=RGlobal.MapUrlArrayList["FeatureStyles"].SelectHouse;
filterMarker=new GlowFilter();
filterMarker.color=objselectedHouse.fillcolor;
filterMarker.blurX=20;
filterMarker.blurY=20;
filterMarker.alpha=objselectedHouse.fillopacity;
filterMarker.strength=2;
simfilterArray.push(filterMarker);
}
}

/*线路要素 移出
*/
public static function DrawVehAreaOut(evt:MouseEvent):void
{
if (symbolToggleEffect)
symbolToggleEffect.end();
var targetGarphic:Graphic=evt.currentTarget as Graphic;

//获取图层
var layer:GraphicsLayer=GetAreaLayer();

//找到缓冲区图层,存在则隐藏
var currArea:Graphic=FindGraphicByAttr(layer, "AREAID", targetGarphic.attributes.USERID);

if (currArea)
{
currArea.visible=false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: