加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ArcGIS Server Flex实现GraphicsLayer上画点、线、面

发布时间:2020-12-15 04:25:29 所属栏目:百科 来源:网络整理
导读:ArcGIS Server Flex实现GraphicsLayer上画点、线、面 ?? ? 目的: 1.ArcGIS API for Flex 实现GraphicsLayer上画点、线、面 。 准备工作: 1.这次地图数据就用Esri提供的 http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapSer

ArcGIS Server Flex实现GraphicsLayer上画点、线、面??

?

目的:
1.ArcGIS API for Flex实现GraphicsLayer上画点、线、面
准备工作:
1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer
完成后的效果图:

?

开始:
1.启动Flex Builder3新建工程以及引入ArcGIS API for Flex library的开发包。
2.新建DrawTool.mxml页面,然后在页面上添加esri:Map控件设置esri:ArcGISTiledMapServiceLayer等。
3.和上一篇一样仍旧用mx:ToggleButtonBar来实现功能按钮,mx:ToggleButtonBar需要包含6个按钮分别实现6种不一样的操作,具体代码如下:
?1

<mx:ToggleButtonBar?iconField="icon"??horizontalCenter="-47"?verticalCenter="-151"?itemClick="itemClickHandler(event)"?toggleOnClick="true">
?2

????????<mx:dataProvider>
?3

????????<mx:Array>
?4

????????<mx:Object?icon="{point}"?/>
?5

????????<mx:Object?icon="{point2}"?/>
?6

????????<mx:Object?icon="{polyline3}"?/>
?7

????????<mx:Object?icon="{polyline}"?/>
?8

????????<mx:Object?icon="{polyline2}"?/>
?9

????????<mx:Object?icon="{polygon}"?/>
10

????????<mx:Object?icon="{polygon2}"?/>
11

????????<mx:Object?icon="{polygon3}"?/>
12

????????</mx:Array>
13

????????</mx:dataProvider>
14

????????</mx:ToggleButtonBar>
4.上面的代码中icon对应的图标定义在mx:Script中如下:
?1

//图标图片
?2

????????????[Bindable]?
?3

????????????[Embed(source="assets/point.gif")]
?4

????????????public?var?point:Class;?
?5

????????????
?6

????????????[Bindable]?
?7

????????????[Embed(source="assets/point2.gif")]
?8

????????????public?var?point2:Class;?
?9

????????????
10

????????????[Bindable]?
11

????????????[Embed(source="assets/polyline.gif")]
12

????????????public?var?polyline:Class;?
13

????????????
14

????????????[Bindable]?
15

????????????[Embed(source="assets/polyline3.gif")]
16

????????????public?var?polyline3:Class;?
17

????????????
18

????????????[Bindable]?
19

????????????[Embed(source="assets/polyline2.gif")]
20

????????????public?var?polyline2:Class;?
21

????????????
22

????????????[Bindable]?
23

????????????[Embed(source="assets/polygon.gif")]
24

????????????public?var?polygon:Class;?
25

????????????
26

????????????[Bindable]?
27

????????????[Embed(source="assets/polygon2.gif")]
28

????????????public?var?polygon2:Class;?
29

????????????
30

????????????[Bindable]?
31

????????????[Embed(source="assets/polygon3.gif")]
32

????????????public?var?polygon3:Class;?
5.现在要实现在地图上画点、线等就需要esri:GraphicsLayer 的功能,实际上点、线、面都是画在GraphicsLayer的所以需要在Map控件中添加:
1

<esri:Map?id="myMap"?extent="{allMap}"?logoVisible="false">
2

????????<esri:ArcGISTiledMapServiceLayer?url="http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer"?/>
3

????????<esri:GraphicsLayer?id="myGraphicsLayer"/>?
4

????</esri:Map>
6.要进行绘制功能esri已经提供了esri:Draw这个控件能很方便的实现基本图形的绘制,使用代码如下:
1

<esri:Draw?id="drawToolbar"?map="{myMap}"?graphicsLayer="{myGraphicsLayer}"?/>
7.esri:Draw有2个属性一个是要进行画图操作的地图控件,一个是画图的容器GraphicsLayer 。
8.接下来定义一下画出来的点、线、面的显示样式,代码如下:
1

<esri:SimpleLineSymbol?id="sls"?style="solid"?color="0xFF0000"?width="2"?alpha="1"/>
2

<esri:SimpleMarkerSymbol?id="sms"?style="square"?color="0xFF0000"?size="10"?/>
3

<esri:SimpleFillSymbol?id="sfs"?style="solid"?color="0xFF0000"?alpha="0.5"/>
9.上面的sls为线的显示样式;sms为点的显示样式;sfs为面的显示样式,关于样式的定义可以查询一下帮助了有很多的样式等可以实现。
10.最后就是编写功能代码在上面的ToggleButtonBar控件中已经给它添加了一个itemClick="itemClickHandler(event)",这里就是编写itemClickHandler(event)这个方法的代码:
?1

import?mx.events.ItemClickEvent;
?2

private?function?itemClickHandler(event:ItemClickEvent):void
?3

????????????

{
?4

????????????????//设置点样式
?5

????????????????drawToolbar.markerSymbol=sms;
?6

????????????????//设置线样式
?7

????????????????drawToolbar.lineSymbol=sls;
?8

????????????????//设置面样式
?9

????????????????drawToolbar.fillSymbol=sfs;
10

????????????????//更加按钮的index值设置不同的绘制操作
11

????????????????switch(event.index)
12

????????????????

{
13

????????????????????case?0:
14

????????????????????

{
15

????????????????????????drawToolbar.activate(Draw.MAPPOINT);
16

????????????????????????break;
17

????????????????????}
18

????????????????????case?1:
19

????????????????????

{
20

????????????????????????drawToolbar.activate(Draw.MULTIPOINT);
21

????????????????????????break;
22

????????????????????}
23

????????????????????case?2:
24

????????????????????

{
25

????????????????????????drawToolbar.activate(Draw.LINE);
26

????????????????????????break;
27

????????????????????}
28

????????????????????case?3:
29

????????????????????

{
30

????????????????????????drawToolbar.activate(Draw.POLYLINE);
31

????????????????????????break;
32

????????????????????}
33

????????????????????case?4:
34

????????????????????

{
35

????????????????????????drawToolbar.activate(Draw.FREEHAND_POLYLINE);
36

????????????????????????break;
37

????????????????????}
38

????????????????????case?5:
39

????????????????????

{
40

????????????????????????drawToolbar.activate(Draw.POLYGON);
41

????????????????????????break;
42

????????????????????}
43

????????????????????case?6:
44

????????????????????

{
45

????????????????????????drawToolbar.activate(Draw.FREEHAND_POLYGON);
46

????????????????????????break;
47

????????????????????}
48

????????????????????case?7:
49

????????????????????

{
50

????????????????????????drawToolbar.activate(Draw.EXTENT);
51

????????????????????????break;
52

????????????????????}
53

????????????????}
54

????????????} 11.很简单就完成了这些功能可以运行查看效果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读