flex导入shp文件

  以下为类的全部代码:

package components
{
import Hymn.Classes.LoadDataClass;
import Hymn.Event.OpenFileEvent;
import Hymn.OpenFile.OpenFileClass;

import com.esri.ags.Graphic;
import com.esri.ags.Map;
import com.esri.ags.layers.GraphicsLayer;

import mx.controls.Alert;

import spark.components.mediaClasses.VolumeBar;

public class shpLoad
{

protected var openFileClass1:OpenFileClass;
protected var openFile1:OpenFileEvent;
protected var myGra1:GraphicsLayer;
protected var OpenFileResult1:Hymn.Classes.LoadDataClass;

public function shpLoad(myGra:GraphicsLayer)
{
//Alert.show("good after noon");
myGra1 = myGra;
openFileClass1 = new OpenFileClass();

openFileClass1.addEventListener(OpenFileEvent.FILESELETED,openFile);
openFileClass1.addEventListener(OpenFileEvent.FILELOADED,openFile);
openFileClass1.addEventListener(OpenFileEvent.OPENFILEERROR,openFile);
openFileClass1.addEventListener(OpenFileEvent.FILEANALYZEED,openFile);

openFileClass1.OpenFile();

}

/*public function returnGraphic():GraphicsLayer
{

return myGra1;
}
*/
public function set myGra1Set( value:GraphicsLayer):void
{
myGra1 = value;
}
public function get myGra1Get():GraphicsLayer
{

return myGra1;
}

public function openFile(event:OpenFileEvent):void
{
switch(event.type)
{
case OpenFileEvent.FILESELETED:
openFileClass1.LoadFile();
break;
case OpenFileEvent.FILELOADED:
switch(event.FileType) //打开的文件必须保证为shp文件
{
case OpenFileClass.SHP:
openFileClass1.ReadShp(-1,true);
}
break;
case OpenFileEvent.FILEANALYZEED:
OpenFileResult1 = event.LoadDataItem;
myGra1.clear();
for each (var i:Graphic in OpenFileResult1.GraphicsArr)

{
//i.symbol = default;
this.myGra1.add(i);
}
this.myGra1.refresh();
//Hymn.LocationMethods.LocationToGraphics(myMap,myOpenFileResult.GraphicsArr);
break;

case OpenFileEvent.OPENFILEERROR:
Alert.show(OpenFileEvent.OPENFILEERROR.toString(),"错误提示:");
break;
}

Alert.show("goog");
}

}
}

使用此代码定义一个shplod的类,然后在你的主程序中调用此类,

方法如下,此类的主要思想是,将主程序中要显示的graphicslayer作为参数调入此类,然后此类在此层上添加本地的文件,并显示后,返回值,主程序调用此返回值,并显示即可。

private function importShpFile():void
{
myGraphicLayer.clear();
myShp = new shpLoad(myGraphicLayer);
myGraphicLayer = myShp.myGra1Get;
}

当然需要定义一个graphicslayer,这个上面用于显示图形。

原文地址:https://www.cnblogs.com/arcserver/p/2733829.html