arcgis api for flex 开发入门(六)identify

上一篇 / 下一篇  2008-10-17 09:10:47 / 个人分类:mushup

arcgis api for flex 开发入门(六)identify
"`x7N/I&t }1V0identify 是GIS中比较常用的工具之一,在arcgis api for flex中esri为我们提

供了一个Identify Task来轻松完成identify 的功能。
Iq[0`%a4ZW8{+b{0首先,还是使用<esri:IdentifyTask>标签来创建一个Identify Task。
:~T$zI TA$s.R B"K H0    <!-- Identify Task -->
c]z5yB?0    <esri:IdentifyTask id="identifyTask"
kA%j g'[pf9w0        identifyComplete="identifyCompleteHandler(event)"       

url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special

ty/ESRI_StatesCitiesRivers_USA/MapServer"/>
0M+o7{SU0当identifyTask执行完毕的时候响应identifyComplete消息,我们就可以把

identify的结果做一些处理,比如添加到Graphic layer 上。3sNews.Net——3S社区&资讯平台`[Y'N*L/P,S9f pf
在执行identify之前,首先要对identify的参数设置一下,我们需要一个

IdentifyParameters对象。下面的代码是AS3脚本的代码,用来创建

IdentifyParameters和identify执行。3sNews.Net——3S社区&资讯平台GF%WV!H j_
  var identifyParams : IdentifyParameters = new IdentifyParameters();
C*BvUQ0                identifyParams.returnGeometry = true;3sNews.Net——3S社区&资讯平台/y*y!Zuv"b:L(Wt%c
                identifyParams.tolerance = 3;
Q0wa|4e rdGgu0                identifyParams.width = 600;3sNews.Net——3S社区&资讯平台(W0[6V;VR s
                identifyParams.height = 550;
f@:]L2b%MpA$z+izu0                identifyParams.geometry = geometry;3sNews.Net——3S社区&资讯平台2R+uj`/{8E G
  identifyParams.layerOption =

IdentifyParameters.LAYER_OPTION_ALL;3sNews.Net——3S社区&资讯平台 a2D&aO(n$k HYT$t+]
                identifyParams.mapExtent = map.extent;                 

                identifyTask.execute( identifyParams );
%C Y2A8k&~8QX5Z0其中tolerance是容差半径3sNews.Net——3S社区&资讯平台!}7~ {%tK.j
width:Width of the map currently being viewed in pixels.
{o*b9qT-ro0height : Height of the map currently being viewed in pixels
nE4a$ZDeW&wI+?4N"PJ0geometry 是用来做identify的几何,常用的有点选,矩形选择,多边形选择等3sNews.Net——3S社区&资讯平台{x+\2GZ3ue5d
参数设置好了之后,直接调用identifyTask.execute( identifyParams );就ok了


6h0Z/LM}0那么我们用来做identify的几何怎么来呢,在什么时候去做Identify呢?
G|*H-? yW'|x|0NQ&F0首先回答第一个问题,做identify的几何我们可以利用第四讲中draw控件使用鼠

标交互来获得,这也是RIA的特点之一。
y6V O1vq#O]{;w2g0那么在什么时候做identify呢?3sNews.Net——3S社区&资讯平台K4X$D.o*\
就在做identify的几何画完之后做,嘿嘿,等于没说嘛,当然要在画完了就做:-D
;w2C+v-?0M0现在我们就来完成上面的工作3sNews.Net——3S社区&资讯平台j]~H7d1w'Jn okrJ p
定义一个draw控件
Hg$}&m3yc0 <esri:Draw id="drawToolbar" map="{map}"

graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
G p2X Y8d;N%e }L0记得添加上drawEnd消息的响应函数drawEndHandler(event),这个事件会在draw

之后响应。3sNews.Net——3S社区&资讯平台wx,j8PmI
用as3脚本实现drawEndHandler和identifyCompleteHandler函数3sNews.Net——3S社区&资讯平台&`~7k?Ku
 private function drawEndHandler(event:DrawEvent):void
)Q gH]p3Xd0            {3sNews.Net——3S社区&资讯平台oU F5Vqu;V
                var geometry : Geometry = event.geometry;

                var identifyParams : IdentifyParameters = new

IdentifyParameters();
#p'^*Hr!P @8o0                identifyParams.returnGeometry = true;3sNews.Net——3S社区&资讯平台9`t(v]2B2tsn
                identifyParams.tolerance = 3;
!cd1Oa#o)lB`o-B0                identifyParams.width = 600;3sNews.Net——3S社区&资讯平台$mR4eZ7|wL
                identifyParams.height = 550;
*Gpz,~)m~u'{0                identifyParams.geometry = geometry;
G_?$@o0  identifyParams.layerOption =

IdentifyParameters.LAYER_OPTION_ALL;
6q Z X j%z-s3T|4h[0                identifyParams.mapExtent = map.extent;                 

                identifyTask.execute( identifyParams );3sNews.Net——3S社区&资讯平台+Y+phhG6X-F!z
          3sNews.Net——3S社区&资讯平台fdXu7RQ
           private function identifyCompleteHandler

(event:IdentifyEvent):void3sNews.Net——3S社区&资讯平台n_w~!W9l Fo'W
           {
0R"I;fCYt0               for each (var result:IdentifyResult in

event.identifyResults)3sNews.Net——3S社区&资讯平台f ?*S,c5h0O
               {3sNews.Net——3S社区&资讯平台K*V?!V RmU
                   myGraphicsLayer.add(result.feature);3sNews.Net——3S社区&资讯平台&p;q3N$KsM!`
               }
QmD*s%X(V!P$CR)|0           }3sNews.Net——3S社区&资讯平台 m6y#]m e#u!b,P\?eu
ok ,我们的工作大致就完成了,下面我们来看一下效果


g+I2E c@&N;O0Y0W0Flash:demo

源代码:

<?xml version="1.0" encoding="utf-8"?>3sNews.Net——3S社区&资讯平台 z4A:yO0DSX4K
<mx:Application
{"vB9Z_$`f0    xmlns:mx="http://www.adobe.com/2006/mxml"3sNews.Net——3S社区&资讯平台 pJ`4Gqv
    xmlns:esri="http://www.esri.com/2008/ags"3sNews.Net——3S社区&资讯平台8Qg({$iNe1v8Wo,j
    layout="absolute"
Ar5F2[Q4q0    pageTitle="Identify Features on the Map"
:vfIlV0    >
;B.~ `A*yXw]8`3W0     <mx:Script>
'~l2rG'Q-N5CGa0        <![CDATA[3sNews.Net——3S社区&资讯平台8r#K-LuwR:U
            import com.esri.ags.Graphic;3sNews.Net——3S社区&资讯平台 oIw(C5X+rp2{
            import com.esri.ags.events.DrawEvent;3sNews.Net——3S社区&资讯平台;d[HlPZ d
            import com.esri.ags.events.IdentifyEvent;
l1~]1XG0            import com.esri.ags.geometry.Geometry;3sNews.Net——3S社区&资讯平台y P/]*B qmh7x
            import com.esri.ags.symbol.Symbol;
,k K*uY|~0            import com.esri.ags.tasks.IdentifyParameters;
9` ^[:\1FWF0            import com.esri.ags.tasks.IdentifyResult;
/si$p/Au'A0            import com.esri.ags.toolbars.Draw;

            private function drawEndHandler(event:DrawEvent):void
x0N+`-uV1wis0            {
ZQnj P3Ho2nI0                var geometry : Geometry = event.geometry;

                var identifyParams : IdentifyParameters = new IdentifyParameters();
jM'C9L[0                identifyParams.returnGeometry = true;
"Mr4dJWB!U0                identifyParams.tolerance = 3;
+k R9@$VTw0                identifyParams.width = 600;3sNews.Net——3S社区&资讯平台Iwc$j vF
                identifyParams.height = 550;3sNews.Net——3S社区&资讯平台ec7A Hq"J5g)a
                identifyParams.geometry = geometry;    
m,G#D"B-a)m[ O0                identifyParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
$jSG,c5H2lx|0    identifyParams.mapExtent = map.extent;
5Pi ^F6R+Hg+G0                               
xcoM^N0                identifyTask.execute( identifyParams );3sNews.Net——3S社区&资讯平台3D7JE%]"Mv
           }
It-r*r*HN0          3sNews.Net——3S社区&资讯平台1f$}x2e(@j3Z
           private function identifyCompleteHandler(event:IdentifyEvent):void
W^sFi/gD G*P0           {
vXiQh0               for each (var result:IdentifyResult in event.identifyResults)
6]6o_@g1e xp0               {
QF w mz-I0                   myGraphicsLayer.add(result.feature);3sNews.Net——3S社区&资讯平台9fc6{5g6{#} xW
               }3sNews.Net——3S社区&资讯平台 S-MA5k \A(M1g
           }       3sNews.Net——3S社区&资讯平台b$f JgzT0C
        ]]>
i#SG@a^f-^AC0    </mx:Script>   3sNews.Net——3S社区&资讯平台 s MvXc
    <!-- Draw ToolBar --> 3sNews.Net——3S社区&资讯平台G;TL8T+g
    <esri:Draw id="drawToolbar" map="{map}" graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">3sNews.Net——3S社区&资讯平台M f I-xwYqme _
    </esri:Draw>   3sNews.Net——3S社区&资讯平台+d^%l fZf)Z
    <!-- Identify Task -->3sNews.Net——3S社区&资讯平台4jA R|5H-lu+_
    <esri:IdentifyTask id="identifyTask"3sNews.Net——3S社区&资讯平台X(`"Df'y+C1L
        identifyComplete="identifyCompleteHandler(event)"3sNews.Net——3S社区&资讯平台7U3|LJD
        url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/>
;T}x_Yp&Vi0    <mx:Panel  width="100%" height="100%">3sNews.Net——3S社区&资讯平台,n,L4_oR wT M5G?
       <mx:Button label="Identify" click="drawToolbar.activate(Draw.MAPPOINT)"/>   3sNews.Net——3S社区&资讯平台3j{7z4z+jb'~\5^
        <esri:Map id="map" width="100%" height="100%">
4wB%M"m-[OvH-Q [0            <esri:ArcGISDynamicMapServiceLayer3sNews.Net——3S社区&资讯平台$w6k$Uj$J |1iS
                url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer" />3sNews.Net——3S社区&资讯平台5HQ7t#`\&N$ch~
            <esri:GraphicsLayer id="myGraphicsLayer"/>3sNews.Net——3S社区&资讯平台;pgcU!O
        </esri:Map>3sNews.Net——3S社区&资讯平台lbN$Z5lK2z,K(csOi
 </mx:Panel>3sNews.Net——3S社区&资讯平台8j\wmIw/fZ
</mx:Application>3sNews.Net——3S社区&资讯平台#D wZR$~2[[

J%S)N.p3R S0


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar