arcgis api for flex 开发入门Word文档格式.docx
《arcgis api for flex 开发入门Word文档格式.docx》由会员分享,可在线阅读,更多相关《arcgis api for flex 开发入门Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。
mx:
Application
3.
xmlns:
mx="
4.
esri="
5.
pageTitle="
UsingArcGISAPIforFlextoconnecttoacachedArcGISOnlineservice"
6.
styleName="
plain"
7.
<
esri:
MapcrosshairVisible="
true"
8.
<
ArcGISTiledMapServiceLayer
9.
url="
/>
10.
/esri:
Map>
11.<
/mx:
Application>
arcgisapiforflex开发入门
(二)map的创建
在flex中创建一个esri的map,你只需要使用<
标签就可以轻松完成。
在<
标签中可以添加属性和响应事件的消息。
如下:
Mapwidth="
100%"
height="
50%"
id="
EsriMap"
creati
resize="
EsriMapResize(event);
"
extentChange="
ESRIMapExtentChange(event);
mouseMove="
OnDrawMouseMove(event)"
width和height定义的map的大小,id="
唯一标识了这个map。
针对map的消息也有很多,最常用的就是creationComplete,resize和鼠标消息了。
现在我们map有了,那么我们如何让她显示数据呢,这就需要给<
标签添加一个layer子标签
。
在agsflexapi中有以下几种类型的layer。
ArcGISDynamicMapServiceLayer:
AllowsyoutoworkwithadynamicmapserviceresourceexposedbytheArcGISServerRESTAPI.
ArcGISImageServiceLayer:
AllowsyoutoworkwithanimageserviceresourceexposedbytheArcGISServerRESTAPI.
ArcGISMapServiceLayer:
ThebaseclassforArcGISServermapservices.
ArcGISTiledMapServiceLayer:
AllowsyoutoworkwithacachedmapserviceresourceexposedbytheArcGISServerRESTAPI.
ArcIMSMapServiceLayer:
AllowsyoutoworkwithanArcIMSimageservice.
GPResultImageLayer:
AllowsyoutoviewageoprocessingtaskresultidentifiedbyjobIdandparameterName.
GraphicsLayer:
AlayerthatcontainsoneormoreGraphicfeatures.
其中GraphicsLayer是支持客户端添加Graphicfeatures的图层,需要在客户端表现的,或者交互操作中产生的要素都要加到这个layer上。
下面,我们就添加一个ArcGISTiledMapServiceLayer和GraphicsLayer到map上。
>
ArcGISTiledMapServiceLayer
GraphicsLayerid="
myGraphicsLayer"
spatialReference="
{sr}"
/>
其中<
ArcGISTiledMapServiceLayer>
标签中的url属性为提供该服务的地址。
GraphicsLayer>
标签其中的spatialReference属性定义了该图层的空间参考系。
创建一个空间参考系,只需要使用<
SpatialReference>
标签就可以了,其中wkid是esri已经定义好的空间草考系的ID,具体ID对应的空间参考可以在
SpatialReferenceid="
sr"
wkid="
4326"
那么,我们如何定义我们想显示的范围呢?
很简单,在<
下面添加<
extent>
子标签,我们就可以来控制当前的显示范围了。
Extent
id="
esriMapExtent"
xmin="
116"
ymin="
39.5"
xmax="
116.5"
ymax="
40.5"
其中x是经度,y是纬度。
这样一个北京地区的map就可以显示到我们面前了。
完整代码如下
xml
version="
encoding="
xmlns:
pageTitle="
Using
ArcGIS
API
for
Flex
to
connect
a
cached
Online
service"
styleName="
SpatialReference
id="
wkid="
Map
crosshairVisible="
id
=
xmin="
ymin="
xmax="
ymax="
GraphicsLayer
spatialReference="
arcgisapiforflex开发入门(三)地图浏览控件的使用
地图浏览包括放大,缩小,漫游,复位,上级窗口,下级窗口等
在arcgisapiforflex中,esri已经封装好了一个地图浏览,我们在程序中可
以直接使用,只需要几十行代码,就可以完成复杂的任务。
首先在上一讲的基础上创建一个Navigation控件。
使用<
Navigation>
标签
就可以了。
Navigationid="
navToolbar"
map="
{myMap}"
将<
标签的map属性设置为你要控制的map,也就是说把控件绑到
map上。
然后我们创建一个工具条,用来做对map浏览的控制
ControlBarhorizpaddingBottom="
0"
paddingTop="
Buttonlabel="
放大"
click="
navToolbar.activate
(Navigation.ZOOM_IN)"
缩小"
(Navigation.ZOOM_OUT)"
漫游"
(Navigation.PAN)"
上级窗口"
navToolbar.zoomToPrevExtent
()"
enabled="
{!
navToolbar.isFirstExtent}"
下级窗口"
navToolbar.zoomToNextExtent()"
navToolbar.isLastExtent}"
复位"
click="
navToolbar.zoomToFullExtent()"
button的click消息响应函数直接调用<
控件的函数就可以了
放大,缩小,漫游调用的都是激活工具的函数。
剩余3个button的响应函数分别
调用<
控件zoomToPrevExtent,zoomToNextExtent,
zoomToFullExtent函数就ok了。
arcgisapiforflex在客户端提供了强大的绘制功能,可以通过简单的调用来
完成复杂的绘制工作,达到很好的交互效果,提供完美的用户体验,感觉不出来
是在web上操作。
下面我们就一起来实现绘制功能。
首先,我们需要定义一个draw控件,使用<
esri
raw>
标签来完成创建工作,如
下面的代码
rawid="
drawToolbar"
graphicsLayer="
{myGraphicsLayer}"
raw>
标签的map属性要绑定要你需要绘制的map上。
graphicsLayer属性要
绑定到一个graphicsLayer上,所有绘制的结果都会添加到graphicsLayer上,
graphicsLayer的创建可以参考第二讲的内容。
控件创建好了,我们下面就可以调用这个控件的函数来完成绘制任务。
和上一讲一样,我们创建一个controlbar来响应这些绘制的操作。
点"
drawToolbar.activate
(Draw.MAPPOINT)"
线"
(Draw.POLYLINE)"
流线"
(Draw.FREEHAND_POLYLINE)"
矩形"
(Draw.EXTENT)"
多边形"
(Draw.POLYGON)"
流多边形"
(Draw.FREEHAND_POLYGON)"
结束绘制"
drawToolbar.deactivate
()"
ControlBar>
在button的click响应函数里,我们只需要调用draw控件的activate函数来激活
当前绘制工具就可以了。
当你不想绘制的时候,调用deactivate函数就ok了,释放掉当前选择的绘制工具。
完整代码:
Code
Draw
map="
ControlBar
horizontalGap="
paddingBottom="
paddingTop="
Button
label="
(Draw.FREEHAND_POLYGON)
()
myMap"
_World_2D/MapServer"
在gis中,针对要素的查询是一个最基本的操作,也是最常用的操作之一。
下面我们介绍如何使用arcgisapiforflex来查询我们需要的东西。
要在arcgisapiforflex中进行查询操作,首先需要定义一个查询任务面板。
ueryTask>
标签就可以了。
ueryTaskid="
queryTask"
phics/ESRI_Census_USA/MapServer/5"
ueryid="
query"
text="
{qText.text}"
returnGeometry="
spatialRelati>
utFields>
String>
MED_AGE<
POP2007<
/esri
uery>
ueryTask
id唯一标识这个查询任务,url告诉查询面板去哪查。
定义一个查询,text是你需要查询的东西,<
子标
签告诉Query查询的结果返回哪些字段的内容。
QueryTask定义好之后,我们还需要在界面上来调用这个QueryTask。
因此我们定
义一个文本输入框和一个查询按钮
mx
aneltitle="
Queryalayer(searchforastate)"
layout="
horizontal"
backgroundColor="
0xB2BFC6"
borderStyle="
solid"
TextInputwidth="
qText"
enter="
doQuery()"
California"
DoQuery"
doQuery
/mx
anel>
文本输入框用来输入你想要查询的内容,button用来执行查询的动作。
那么这个doQuery()怎么实现呢?
我们在mxml的标签中已经无法实现,这就需要引
入activescript脚本。
我们需要在mxml中使用activescript脚本历来编写代码,
实现我们想要的功能。
关于activescript的语法大家可以