• 关于arcgi s_api_for_flex的总结


     

    1.flex 的简介

    a) Flex是adobe开发的东西,主要特点就是开发一个swf格式的应用,flex可以做桌面的应用和web的应用,但本质差不多。

    b) Flex采用mxml的格式来进行应用的布局,然后用ActionScript进行脚本处理。

    例子:

    application中放进一个erismap控件,map的一个load函数loadHandler

     

    <s:Application>

    <fx:Script>

    <![CDATA[

    private function loadHandler():void

    {

    }

    ]]>

    </fx:Script>

    <erismap load="loadHandler()">

    </s:Application>

    c) Acrgis for flex其实就是引进一个jar包(但flex真实为swc包),然后就可以进行调用Acrgis 的函数

    2.Argis简介

    a) Arcigs 是专门处理地图的,它自己拥有acgis map ,arcgis server的软件来进行处理和发布地图。

    b) 地图有很多种的格式,flex要进行调用的话必须清楚服务器url是什么格式。比如什么wms,wmts,什么的,我也不是很清楚。、

    c) 但调用地图我们自己做的是acgis的专门地图的服务,只需要初始化一个ArcGISDynamicMapServiceLayer 对象然后设定他的url(我们服务器的url)就行。

     

    private var 

    huiluCommunityWMS:ArcGISDynamicMapServiceLayer =

    new ArcGISDynamicMapServiceLayer();

     

    huiluCommunityWMS.url =  "http://localhost:6080/arcgis/rest/services/myserver/Map Server";

     

    这样huiluCommunityWMS对象就创建了,然后map.addLayers(huiluCommunityWMS);后就可以在map中显示这个地图

     

    下面这些都是acgis地图的类,ArcGISDynamicMapServiceLayer 只是其中一个,南方数码给我们提供的就是TiledMapServiceLayer这样的类的地图,但这种类的地图需要自定义一个类并且进行继承,然后再指定他的url啊,他的区域范围之类的一些属性啊后 方可使用。

    (自定义一个类 这个类在源码中的layer包的WMTSLayer_province)

     

    Class

    Description

     

    ArcGISDynamicMapServiceLayer

    Allows you to work with a dynamic map service resource exposed by the ArcGIS Server REST API (available in ArcGIS Server 9.3 and above).

     

    ArcGISImageServiceLayer

    Allows you to work with an Image Service resource exposed by the ArcGIS Server REST API (available in ArcGIS Server 9.3 and above).

     

    ArcGISTiledMapServiceLayer

    Allows you to work with a cached map service resource exposed by the ArcGIS Server REST API (available in ArcGIS Server 9.3 and above).

     

    ArcIMSMapServiceLayer

    Allows you to add ArcIMS image services to your map.

     

    DynamicMapServiceLayer

    Base class for all dynamic layers that can be added to a map.

     

    FeatureLayer

    The feature layer can be used to display features from one single layer of either a Feature Service or a Map Service.

     

    GPResultImageLayer

    Allows you to view a geoprocessing task result.

     

    GraphicsLayer

    A layer that contains one or more Graphic features.

     

    KMLLayer

    The KMLLayer is used to create a layer based on a publicly accessible KML file (.kml,.kmz).

     

    Layer

    Base class for all layers that can be added to a map.

     

    MapImageLayer

    The MapImageLayer class is used to add georeferenced images to the map.

     

    OpenStreetMapLayer

    Allows you to use basemaps from OpenStreetMap.

     

    TiledMapServiceLayer

    Base class for all tiled layers that can be added to a map.

     

    WMSLayer

    A layer for OGC Web Map Services.

     

    WMTSLayer

     

     

    d) 好了,我们现在能创建了一个map和显示地图,然后怎么在上面就行划线啊,标志啊啥的呢。其实map是一个对象,ArcGISDynamicMapServiceLayer 地图 是map下一级的对象,而标志,划线啥的同ArcGISDynamicMapServiceLayer 地图对象一样,也是map的下一级对象GraphicsLayer ,同样是addlayer这个方法给加进去。

     

    private var fillGraphicLayer:GraphicsLayer = new  GraphicsLayer();

    map.addLayer(fillGraphicLayer);

     

    GrapicsLayer就是显示划线啊,标记啊之类的Layer,同地图具有等同的地位。

    然后划线,标记这种对象是GrapicsLayer的下一级对象

    Graphic

     

    Property

    Defined By

     

     

    attributes : Object 

    Name-value pairs of fields and field values associated with the graphic.

    Graphic

     

     

    checkForMouseListeners : Boolean 

    Prevents the map from zooming and panning when the mouse is over the graphic and the graphic has registered mouse listeners.

    Graphic

     

     

    geometry : Geometry 

    The geometry that defines the graphic.

    Graphic

     

     

    graphicsLayer : GraphicsLayer 

    [read-only] Return the parent as an instance of GraphicsLayer.

    Graphic

     

     

    infoWindowRenderer : IFactory 

    The info renderer.

    Graphic

     

     

    symbol : Symbol 

    The symbol for the graphic.

     

    如上图,Graphic有Attribute,geometry,symbol着三个最重要的属性。 Attribute是他可以加上去的一些参数。这些参数传给他的一些Label,button这种实际的控件,

    <s:Label id="myLabel"  text ="{data}">

    如上。Data 等同于Graphic的Attribute 属性。而geometry属性是说明这个Graphic的形状,

     

    Constant

    Defined By

     

     

    EXTENT : String = esriGeometryEnvelope 

    [static] An extent is defined by xmin, ymin, xmax and ymax.

    Geometry

     

     

    MAPPOINT : String = esriGeometryPoint 

    [static] A MapPoint is a basic point with x (often longitude), y (often latitude) and an optional spatial reference.

    Geometry

     

     

    MULTIPOINT : String = esriGeometryMultipoint 

    [static] A multipoint consists of one or more MapPoint(s).

    Geometry

     

     

    POLYGON : String = esriGeometryPolygon 

    [static] A polygon is a set of areas with three or more points.

    Geometry

     

     

    POLYLINE : String = esriGeometryPolyline 

    [static] A polyline is set of lines with two or more points.

     

    MAPPOINT 是一个点,polyline是线,等等,但注意的是polyline初始化时

    var drawPointArray:Array = new Array();

    var drawPointPath:Array = new Array();

    drawPointPath.push(drawPointArray);

    var drawLine:Polyline = new Polyline(drawPointPath);

    fillgraphic.geometry = drawLine;

    drawPointPath是一个Array,这个Array包含的是包含Mappoint的Array。

    然后比较重要的是symbol,这是标志的形状。

    Base class for all symbols. To display points, polylines and polygons on the graphics layer, instead use the following: 

    共有上面分别对应形状的symbol,比如做的那个摄像头标记就是用的PictureMarkerSymbol,话线的是SimpleLineSymbol, 这些都定义在

    <fx:Declarations>

     

    <esri:SimpleMarkerSymbol id="sms"  

     alpha="0.9"  

     color="0xFFFF00"  

     size="11"  

     style="square">  

    <esri:SimpleLineSymbol color="0x000000"/>  

    </esri:SimpleMarkerSymbol>  

     

     

    <esri:PictureMarkerSymbol id="spms"

      source="@Embed(source='assets/camera.png')"

      height = "25"

      width = "40"

      />

     

     

    <!-- Symbol for Find Result as Polyline -->  

    <esri:SimpleLineSymbol id="sls"  

       width="4"  

       alpha="1"  

       color="0xFF0000"  

       style= "dashdot"

       />  

     

    <!-- Symbol for Find Result as Polygon -->  

    <esri:SimpleFillSymbol id="sfs"  

       alpha="0.7"  

       color="0xFFFF00"/>  

    </fx:Declarations>

    如做的那个摄像头的图片标志用的便是PictureMarkerSymbol 。

    3.flex与java进行交互

    a) flex是无法与数据库直接打交道的,所以我们使用blazeds这种方法进行与java交互传输数据,并且由java与数据库打交道。

    b) 参考资料 http://bbs.9ria.com/thread-84889-1-1.html

    c) 首先我们定义一个在flex中的RemoteObject对象

    <!--一个RemoteObject对象,通过这个对象来与java进行交互通信,buildingOperationDestination这个destination是对应着java中的类,这个由remoting-object.xml定义,详细请查看java与flex交互的参考资料-->

    <mx:RemoteObject id="remoteObject" destination="buildingOperationDestination"

    result="remoteObject_resultHandler(event)"

    fault="remoteObject_faultHandler(event)" endpoint = "http://localhost:8080/WebIC/messagebroker/amf"/>

     

    这个对象是对应到buildingOperationDestination,而这个配置是在WebIC下Webcontent下Web-Inf下 flex下remoting-config.xml中定义的

     

    <destination id="buildingOperationDestination" channels="my-amf">

    <properties>

    <source>flexutils.BuidlingOperation</source>

    </properties>

    </destination>

    flexutils.BuidlingOperation是WebIC项目下src项目下的类

     

    d) 配置已经做好,如果出问题了,我写了一个测试的类,

     

     

    上面的testConnectionJava.html

     

    如果是上面的显示,就证明java与flex的连通性是好的,如果报错(只要不改配置文件,一般不会报错),根据信息调整,(这个出错很蛋疼啊。。),这个问题太多,出问题的时候我也一直没能解决,上次搞好,就备份了一下,没敢动了。

     

    Top
    收藏
    关注
    评论
  • 相关阅读:
    18 个 Java8 日期处理的实践,太有用了!
    IntelliJ IDEA 2019.3安装激活破解使用教程
    低收入人员如何打造自己核心竞争优势
    关于企业网络营销的实战步骤
    关于如何做好微信营销和QQ营销的心得
    百度竞价项目的一些简要说明
    ASO是什么?AppStore搜索规则是什么?
    如何选择APP推广渠道和推广技巧
    浅析Hibernate映射(二)——关系映射(3)
    浅析Hibernate映射(二)——关系映射(4)
  • 原文地址:https://www.cnblogs.com/alanjl/p/4014801.html
Copyright © 2020-2023  润新知