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

ArcGIS.Server.9.3和ArcGIS API for Flex实现GraphicsLayer上画

发布时间:2020-12-15 04:12:37 所属栏目:百科 来源:网络整理
导读:目的: 1.ArcGIS API for Flex 实现GraphicsLayer上画点、线、面 。 准备工作: 1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/NPS_Physical_World_2D/MapServer。 完成后的效果图: 开始: 1.启动Flex Builder3新建工
目的:
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 ="{point2}" ?6 ="{polyline3}" ?7 ="{polyline}" ?8 ="{polyline2}" ?9 ="{polygon}" 10 ="{polygon2}" 11 ="{polygon3}" 12 </ 13 14 mx:ToggleButtonBar >
4.上面的代码中icon对应的图标定义在mx:Script中如下:
// 图标图片

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

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

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

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

????????????[Bindable]?
assets/point2.gif ?point2:Class;?
assets/polyline.gif ?polyline:Class;?
15 assets/polyline3.gif 16 ?polyline3:Class;?
17 18 19 assets/polyline2.gif 20 ?polyline2:Class;?
21 22 23 assets/polygon.gif 24 ?polygon:Class;?
25 26 27 assets/polygon2.gif 28 ?polygon2:Class;?
29 30 31 assets/polygon3.gif 32 ?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? ="myGraphicsLayer" ?
4

????
esri:Map >
6.要进行绘制功能esri已经提供了esri:Draw这个控件能很方便的实现基本图形的绘制,使用代码如下:
esri:Draw? ="drawToolbar" ?map ="{myMap}" ?graphicsLayer ="{myGraphicsLayer}" />
7. esri:Draw有2个属性一个是要进行画图操作的地图控件,一个是画图的容器 GraphicsLayer?
8.接下来定义一下画出来的点、线、面的显示样式,代码如下:
esri:SimpleLineSymbol? ="sls" ?style ="solid" ?color ="0xFF0000" ?width ="2" ?alpha ="1" esri:SimpleMarkerSymbol? ="sms" ="square" ?size ="10" esri:SimpleFillSymbol? ="sfs" ="0.5" />
9.上面的sls为线的显示样式;sms为点的显示样式;sfs为面的显示样式,关于样式的定义可以查询一下帮助了有很多的样式等可以实现。
10.最后就是编写功能代码在上面的ToggleButtonBar控件中已经给它添加了一个itemClick="itemClickHandler(event)",这里就是编写 itemClickHandler(event)这个方法的代码:
import?mx.events.ItemClickEvent;

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

????????????
{
?4

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

????????????????drawToolbar.markerSymbol=sms;
?6设置线样式?7????????????????drawToolbar.lineSymbolsls;
?8设置面样式?9????????????????drawToolbar.fillSymbolsfs;
10更加按钮的index值设置不同的绘制操作11????????????????switch(event.index)
12

????????????????
13

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

????????????????????
15

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

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

????????????????????}
18119

????????????????????
20

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

????????????????????
25

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

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

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

????????????????????
35

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

????????????????????
40

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

????????????????????
45

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

????????????????????
50

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

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读