arcgis api for flex 高级主题(三) 与google map 的融合

上一篇 / 下一篇  2008-10-19 08:46:17 / 个人分类:mushup

arcgis api for flex 高级主题(三) 与google map 的融合
'?|}#N1N%v0flex + google map 的基础数据+esri 强大的分析功能
"`w-]7g s h`qQ0直接把这次参加esri开放竞赛的代码开放,大家互相学习,互相进步3sNews.Net——3S社区&资讯平台v4np4yj.]
这个代码的思路是做一个简单的空间分析,先根据点做buffer,然后再用这个buffer去查这个buffer覆盖的人口数,最后显示出来3sNews.Net——3S社区&资讯平台I[7@Q@Q
下面就是整个程序的流程
gxd1I }"YlP'd0pnt(gmap)->buffer(esri)->getPolutions(esri)->result(esri)->infwindow(gmap)
,oQi7HjW2Au0先在gmap上做个点,然后调用esri的服务做buffer将buffer的结果再交给esri的服务去取人口数,最后得到结果交给gmap显示
&i+deBu0这里面比较关键的地方就是gmap数据和esri数据的转换

大家主要关注一下GMapAddOverlay()函数

3sNews.Net——3S社区&资讯平台2|S `bf%U#_^n
Flash:demo
p ??2u*p{J!?0

放代码

<?xml version="1.0" encoding="utf-8"?>
]Ce~0ng3^b0<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:esri="http://www.esri.com/2008/ags" layout="absolute">3sNews.Net——3S社区&资讯平台 }8f \m@#s&?&e
 <mx:Script>
7I ovL*z$Y{E0        <![CDATA[
v"` y6xG{;lO.C e {0         import com.google.maps.extras.xmlparsers.kml.Feature;
(_G/Z%~7B6c8a idJ,@0         import mx.containers.HBox;3sNews.Net——3S社区&资讯平台i y`\^&d9h
         import mx.containers.VBox;3sNews.Net——3S社区&资讯平台&iZ9S0g|J/H
         import mx.controls.Image;3sNews.Net——3S社区&资讯平台6nX-M,u^-g
         import mx.rpc.events.ResultEvent;
7I5b7g%h_0         //导入flash的命名空间3sNews.Net——3S社区&资讯平台$d+Fe)X\8A4{qcqy
         import mx.collections.ArrayCollection;3sNews.Net——3S社区&资讯平台'puF v/V&hT)mf
            import mx.controls.Alert;  3sNews.Net——3S社区&资讯平台V.vsZ"T B
            import mx.controls.Button;3sNews.Net——3S社区&资讯平台 m4W6@F vhz?)x
            import mx.rpc.AsyncResponder;
rG$m8Hz'EFw0            import flash.geom.Point;3sNews.Net——3S社区&资讯平台 Q~d0k]2^GZ
            import mx.rpc.events.FaultEvent;
TE4r/@gHis)q0            import mx.printing.FlexPrintJobScaleType;
9`:e8I(A2qe0            import mx.printing.FlexPrintJob;
!xY:y0^I$cRD0            import mx.rpc.soap.mxml.Operation;3sNews.Net——3S社区&资讯平台3z(|([aW.yj0I
            import mx.containers.Canvas;
_%O+z"NWs,^0Hv"F0            import flash.text.*;
K&~'m#BM"n,g0           
.a5b |Hyt3~0            //导入esri flex api
+f6Q3x_ V \0         import com.esri.ags.geometry.MapPoint;3sNews.Net——3S社区&资讯平台V#c]f*} ZN
         import com.esri.ags.events.ExtentEvent;3sNews.Net——3S社区&资讯平台;h ]([%B$m r Wm
         import com.esri.ags.geometry.Geometry;3sNews.Net——3S社区&资讯平台4x"g A,ZmbT1Q
            import com.esri.ags.geometry.Polygon; 3sNews.Net——3S社区&资讯平台9[q*gK2aM*C8s
            import com.esri.ags.geometry.Polyline;
"E.q.\0N UP7\VQ!_0            import com.esri.ags.events.DrawEvent; 
k] a u,E rw0            import com.esri.ags.events.ExtentEvent;                                        3sNews.Net——3S社区&资讯平台4ML;a'y { ~3y d
            import com.esri.ags.SpatialReference;           
qBC8Yb|G0aR.F'{0            import com.esri.ags.events.GeometryServiceEvent;3sNews.Net——3S社区&资讯平台uU/w7E$|u8Q({ a
    import com.esri.ags.tasks.FeatureSet;3sNews.Net——3S社区&资讯平台%fGL%MC)ff;en%}
            import com.esri.ags.tasks.Query;3sNews.Net——3S社区&资讯平台J/fvC b
            import com.esri.ags.tasks.BufferParameters; 
;XFj;g-s`0            import com.esri.ags.tasks.FeatureSet;
9_$?%d}!]0            import com.esri.ags.events.GeoprocessorEvent;3sNews.Net——3S社区&资讯平台SnW/zWh0m
            import mx.rpc.events.FaultEvent;3sNews.Net——3S社区&资讯平台z a+s8rLzF
            import com.esri.ags.geometry.Polygon;3sNews.Net——3S社区&资讯平台!g.K[;z+{s
            import com.esri.ags.geometry.MapPoint;3sNews.Net——3S社区&资讯平台{9}qvZ'I6V
            import com.esri.ags.SpatialReference;3sNews.Net——3S社区&资讯平台\m"T%XC y6p\
            import com.esri.ags.events.GeometryServiceEvent;3sNews.Net——3S社区&资讯平台#r+N;r;tAY
            import com.esri.ags.Graphic;
$j2b-Du$IJ0            import com.esri.ags.tasks.ExecuteResult;
@;J T@r a;G&Ru0             import com.esri.ags.tasks.ParameterValue;
C O"R X2[-f ER0             import com.esri.ags.tasks.LinearUnit;3sNews.Net——3S社区&资讯平台4AiO'~M'rr,T
   
(j Xx[4J'S2?0    //导入google map glex api3sNews.Net——3S社区&资讯平台9D"@2X]\5R8k
            import com.google.maps.Map;  3sNews.Net——3S社区&资讯平台]T.ePHIE6`I o
   import com.google.maps.MapEvent;  3sNews.Net——3S社区&资讯平台'}J:M[?Kq
   import com.google.maps.MapType;  3sNews.Net——3S社区&资讯平台%TM3rd0D-T `||^
   import com.google.maps.LatLng;3sNews.Net——3S社区&资讯平台jn:T0a+j3~9x2@h
   import com.google.maps.controls.MapTypeControlOptions; 
5j$BdpU:YR2Ae0         import com.google.maps.controls.MapTypeControl; 
1m2b,Q5w(@'z|M&kk0         import com.google.maps.controls.ZoomControlOptions; 3sNews.Net——3S社区&资讯平台EL%Y N"y aV9Xc{
         import com.google.maps.controls.ZoomControl; 3sNews.Net——3S社区&资讯平台YXP(u7[!f ~?"T9A
         import com.google.maps.controls.OverviewMapControlOptions; 
o|6X\o ~(H2rd0         import com.google.maps.controls.OverviewMapControl; 
u%x vT Q3R0         import com.google.maps.controls.PositionControlOptions; 
F,V j!y/^f!b/Ss9|0         import com.google.maps.controls.PositionControl;  
6D}!k3Q@I*\ q+|0   import com.google.maps.MapEvent;3sNews.Net——3S社区&资讯平台 HpL.zp
   import com.google.maps.overlays.Marker;
2o/\W+Ho(R1P:L0   import com.google.maps.overlays.MarkerOptions;
|:{7| TW&E:H0   import com.google.maps.styles.FillStyle;3sNews.Net——3S社区&资讯平台&EPAvN;H
   import com.google.maps.styles.StrokeStyle;3sNews.Net——3S社区&资讯平台'Y`k8D[
   import com.google.maps.overlays.Polygon;3sNews.Net——3S社区&资讯平台9k2m-^ n1ibN
    import com.google.maps.overlays.PolygonOptions;
^.B%Uz3k1F0    import com.google.maps.overlays.Polyline;
'yNLR0]8?f-t0    import com.google.maps.overlays.PolylineOptions;3sNews.Net——3S社区&资讯平台,QMRWfrAT t ^
    import com.google.maps.InfoWindowOptions;3sNews.Net——3S社区&资讯平台B7D1J9R7]1|w-|
    import com.google.StatusBarCtrl.StatusBar;3sNews.Net——3S社区&资讯平台1c `'WP p:v
    //        [Bindable]
I1|~x#h:c8yri0    //http://ws.geonames.org/search?q=wuhan&maxRows=10
&v:y5Zb$ws:]7xx9O0          private var gMap:com.google.maps.Map; 3sNews.Net——3S社区&资讯平台Q0w9Z1|a?w
          private var m_InfoWndPos:LatLng;3sNews.Net——3S社区&资讯平台/R~'e6i5Z
             private function initGMap():void 
.P;pB7y$S$f6gFq_a0   {  3sNews.Net——3S社区&资讯平台 H EbLv;k1K} XN+D
       gMap = new com.google.maps.Map();  3sNews.Net——3S社区&资讯平台,J7x9Mj xv K
       gMap.key = "ABQIAAAARJxvYgE1qmcmBsUK6FiaORTtt6_ioQbjwG28bvOyh3vOfH5sShSvRDO1-RFvnFi5rwQ5ToDc4ANvbA";  
2Li{y;]%I n-[Xo0       gMap.width = mapContainer.width;  3sNews.Net——3S社区&资讯平台+wuX5f:e"`
       gMap.height = mapContainer.height; 3sNews.Net——3S社区&资讯平台[ ^%hS)`c
    3sNews.Net——3S社区&资讯平台+ECrS/D @ft
     mapContainer.addChild(gMap); 
xZW$d&hS0       gMap.addEventListener(MapEvent.MAP_READY, mapReadyHandler);  3sNews.Net——3S社区&资讯平台kt4QeU3?W _%@
       gMap.addControl( new PositionControl( new PositionControlOptions() ) ); 
l DG D;NR N0        gMap.addControl( new OverviewMapControl( new OverviewMapControlOptions() ) );  3sNews.Net——3S社区&资讯平台oKOu#j#l/s3s#F
        gMap.addControl(new ZoomControl( new  ZoomControlOptions()) ); 
:B$H[3zq.` R0        gMap.addControl( new MapTypeControl( new MapTypeControlOptions() ) );3sNews.Net——3S社区&资讯平台qs D$o U
        gMap.addControl(new StatusBar());
m ~ qPU8o3b4W"~ ~0        addContextMenu();

             
x&S1DA-r.^0   } 
MD(s4k6V6r0       private function mapReadyHandler(e:MapEvent):void 
Q7V`8Z6F0            {  
g6JsBo7vY0 
n5u,_Hc5O{([(k?0              if(gMap.isLoaded())
$uw9J6Jz_'r O:y2v0              {
zF7[m]iA*W.k*n0                 gMap.setCenter(new LatLng(40,116), 10, MapType.NORMAL_MAP_TYPE);  
B.F&pBFY6z0                 gMap.setSize(new flash.geom.Point(mapContainer.width, mapContainer.height));  3sNews.Net——3S社区&资讯平台|.?z)^6`'i
               }
9c~c p ak l"O0            } 

    private function GMapResize(event:Event):void3sNews.Net——3S社区&资讯平台;gX~G0om$th q
    {3sNews.Net——3S社区&资讯平台a9`6k4J3EN
              if(gMap.isLoaded())
Oy*G5]9iRn#r0              {3sNews.Net——3S社区&资讯平台#?3l#r OT~.X
             //   gMap.setCenter(new LatLng(40.736072,-73.992062), 14, MapType.NORMAL_MAP_TYPE);  3sNews.Net——3S社区&资讯平台$iL&gSA9Z
                   gMap.setSize(new flash.geom.Point(mapContainer.width, mapContainer.height));                3sNews.Net——3S社区&资讯平台9K#YEM!H
              }            
HQ'S_!h*L]EE$fS0    }
@Y&|x9?h,E0     //给GMap添加Overlay3sNews.Net——3S社区&资讯平台5}L$uOky"d
    private function GMapAddOverlay(geometry:com.esri.ags.geometry.Geometry ):void
Q t;L;t;^q0    {3sNews.Net——3S社区&资讯平台M;x g:f6s*L*` U~ @&Z[?
      switch( geometry.type )3sNews.Net——3S社区&资讯平台 @F$r(bvR}9_
               {  
LyR+|j0                    case Geometry.GEOMETRY_POINT :
e-n8tmq0                    {3sNews.Net——3S社区&资讯平台0A3C EE;I`.Sha
                     var pnt :MapPoint = geometry as MapPoint ;
a[7V^}D @0                     var markerA:Marker = new Marker(new LatLng(pnt.y, pnt.x),new MarkerOptions({strokeStyle. new StrokeStyle({color: 0x987654}),fillStyle. new FillStyle({color: 0x223344, alpha: 0.8}),radius: 12,hasShadow: true}));
ml0g~%dUn0      gMap.addOverlay(markerA);
k p\E;{5})U o0                    }3sNews.Net——3S社区&资讯平台ct5^+F'R-W2T@$Q-Lt
                  //      myGraphicsLayer.add( new Graphic(geometry, sms ));
S]w9uQ,z0                     //   bufferFeature();                       
6[/}N I)r[0                        break;3sNews.Net——3S社区&资讯平台?$C]&~2m7^ZaY8?
                    case Geometry.GEOMETRY_POLYLINE :
ptf A%ai$E}4L0                  //      myGraphicsLayer.add( new Graphic(geometry, sls ));
[w/cL!@V'J.Ea0                     //   bufferFeature();
:F_.u{*\A S2job0                        var ii:int = 0;
6_+Bbbr0                     var jj:int = 0;
],gT/r]G|)B0                        var geometryPolyline: com.esri.ags.geometry.Polyline = geometry as com.esri.ags.geometry.Polyline;
n9d7Jf'~JQX[0                      var pnt1Array:Array = new Array();3sNews.Net——3S社区&资讯平台tU-Y1u.n:[4o L
                      for(ii = 0; ii <geometryPolyline.paths.length;ii++)3sNews.Net——3S社区&资讯平台]iXTp3[
                        {         
6e f yPo$E n:GG"~|sa0                         for(jj = 0; jj <geometryPolyline.paths[ii].length; jj++)3sNews.Net——3S社区&资讯平台 c(bu0b H x `4D F
                         {    3sNews.Net——3S社区&资讯平台P'u~2RUN h
                          pnt1Array.push(new LatLng(geometryPolyline.getPoint(ii,jj).y,geometryPolyline.getPoint(ii,jj).x));3sNews.Net——3S社区&资讯平台#BmP7v:HG)V'}3c h
                         }                       
%eu$LC _8^0                        }
XX U6Gi KEW0                   var polyline:com.google.maps.overlays.Polyline = new com.google.maps.overlays.Polyline(pnt1Array, new PolylineOptions({strokeStyle. new StrokeStyle({color: 0xFF0000,thickness: 4,alpha: 0.7})}));
2s0Q+c5XV D z0                 //       geometryPolyline.3sNews.Net——3S社区&资讯平台"?[;~k*{0BS
              //       var polyline:Polyline = new Polyline([new LatLng(37.4419, -122.1419),new LatLng(37.4519, -122.1519)], new PolylineOptions({strokeStyle. new StrokeStyle({color: 0xFF0000,thickness: 4,alpha: 0.7})}));
eh6cO3}E0                        gMap.addOverlay(polyline); 3sNews.Net——3S社区&资讯平台 S+h*Yrog+x?c
                        break;3sNews.Net——3S社区&资讯平台 Zm E?hi[0E$T4]
                    case Geometry.GEOMETRY_POLYGON :
'@0r ]]gY*s:}0                     var i:int = 0;3sNews.Net——3S社区&资讯平台R zT~f.u
                     var j:int = 0;3sNews.Net——3S社区&资讯平台:{H%v5P)K*Y8s
                      var geometryPolygon : com.esri.ags.geometry.Polygon = geometry as com.esri.ags.geometry.Polygon;
1kT]`0j-e7A"]0                        var pntArray:Array = new Array();
S3L_6XjD3o(t0                        for(i = 0; i <geometryPolygon.rings.length;i++)3sNews.Net——3S社区&资讯平台&\8a*f/HX
                        {         
-{v,qkk%@@8Qm0                         for(j = 0; j <geometryPolygon.rings[i].length; j++)
v-J_l(pF*IX0                         {                       
pQH*II#Nd0                          pntArray.push(new LatLng(geometryPolygon.getPoint(i,j).y,geometryPolygon.getPoint(i,j).x));
5{ ~S:Z)b7pl&Pi0                         }                       
;k:x:tk S3P0                        }
2h0Bs.g?Pw7T%\WW0                       var polygon:com.google.maps.overlays.Polygon = new com.google.maps.overlays.Polygon(pntArray,new PolygonOptions({ strokeStyle. new StrokeStyle({color: 0x223355,thickness: 4,alpha: 0.7}), fillStyle. new FillStyle({color: 0x223355,alpha: 0.7})}));3sNews.Net——3S社区&资讯平台p S mXAF(H
                       // doGP( geometryPolygon ); 
pWk7C(vqE(wZ0                       gMap.addOverlay(polygon);  
?!ewlH aB&h;~0                    break;
x$jW} {;M7p(B0               }3sNews.Net——3S社区&资讯平台YvD,F2Y7Z4[T/o?Z9j
    }3sNews.Net——3S社区&资讯平台1Zp+[Ji0N0|(G]
    private function GMapAddPolygon(geom :Geometry,polyOptoin:PolygonOptions):void3sNews.Net——3S社区&资讯平台K1h-S+cg&t-H:Fbl qp
    {3sNews.Net——3S社区&资讯平台2@}l brr.cXR
      var i:int = 0;
)]tF$p Vg\!x K!}0                     var j:int = 0;3sNews.Net——3S社区&资讯平台{8_Z+? vwDXg:E*|
                      var geometryPolygon : com.esri.ags.geometry.Polygon = geom as com.esri.ags.geometry.Polygon;3sNews.Net——3S社区&资讯平台V6ma;I r4M
                        var pntArray:Array = new Array();
x9y r`p8p0                        for(i = 0; i <geometryPolygon.rings.length;i++)3sNews.Net——3S社区&资讯平台n6j-{[.E
                        {         3sNews.Net——3S社区&资讯平台'}W5V,qf*~L;x5aF\
                         for(j = 0; j <geometryPolygon.rings[i].length; j++)3sNews.Net——3S社区&资讯平台Su[+j i/e"l
                         {                       
$\&Q8^0f%P3i w.m0                          pntArray.push(new LatLng(geometryPolygon.getPoint(i,j).y,geometryPolygon.getPoint(i,j).x));3sNews.Net——3S社区&资讯平台1vK6o0~9sia'S7t kO
                         }                       
*y^0c_ L-fY2`y0                        }3sNews.Net——3S社区&资讯平台3?`fI6H3]w'T
                       var polygon:com.google.maps.overlays.Polygon = new com.google.maps.overlays.Polygon(pntArray,polyOptoin);3sNews.Net——3S社区&资讯平台0s9L]LnS LKi
                       // doGP( geometryPolygon ); 3sNews.Net——3S社区&资讯平台y,[Q_*k Q/s:h6p*k
                       gMap.addOverlay(polygon); 3sNews.Net——3S社区&资讯平台%tu)UE o)s8K0{~w
    }
Bu|WTi(D0           private function bufferFeature(geom:Geometry) : void
1Bx5ePu5r0            {3sNews.Net——3S社区&资讯平台,f:v^i&~q ?Y
                var myLastFeature:Graphic = new Graphic(geom);
'Y*Q/B!L%A.J']V$~0                var bufferParameters : BufferParameters = new BufferParameters();3sNews.Net——3S社区&资讯平台me,m(~ryg
                bufferParameters.features = [myLastFeature];
:o-PgyPD8E#n0                bufferParameters.distances = [3000]; // [2000,4000];
IZ2kBzc E0                bufferParameters.unit = BufferParameters.UNIT_METER;
6KIXpl.]$_I0                bufferParameters.bufferSpatialReference = new SpatialReference(102113); //308003sNews.Net——3S社区&资讯平台4@GCRCv
               
QO-l.[)t0                myGeometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler1);
w;c)H[4w[l)Ep0                myGeometryService.buffer( bufferParameters );

                function bufferCompleteHandler1( event : GeometryServiceEvent ) : void3sNews.Net——3S社区&资讯平台|&@2A#Xa5P$j"^ @ ko\
                {
3v7jF+w)^p^6O0                    for each ( var graphic : Graphic in event.graphics )3sNews.Net——3S社区&资讯平台 Z6J8rs$V!at
                    {
_'`5H izuf`3?0                    //    graphic.symbol = sfs;3sNews.Net——3S社区&资讯平台 D{a/~c)Vl
                        graphic.toolTip = "Buffered Stuff";
lCnV0Oq0                //        myGraphicsLayer.add( graphic );3sNews.Net——3S社区&资讯平台n'[9G6jt j f(l5^AV
                  GMapAddOverlay(graphic.geometry);3sNews.Net——3S社区&资讯平台 ]z"m4kE
                        doGP( graphic.geometry );
c1EZ3Q:?.]0                    }3sNews.Net——3S社区&资讯平台7Z.?!@;?'_-d f
                    myGeometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler1);3sNews.Net——3S社区&资讯平台 MO'n\W*x#oX
                }               
U aiT dmZk0            }
g;v"F m[)UT0            private function doGP( thisGeometry:Geometry) : void
:I&v,|;l!i,mK0            {3sNews.Net——3S社区&资讯平台*`"^ `O6v3OX1o
                this.cursorManager.setBusyCursor();
S+s+fr?E0                var featureSet1 : FeatureSet = new FeatureSet();3sNews.Net——3S社区&资讯平台:F/i@)RoG
                featureSet1.features = [ { geometry : thisGeometry} ];
%ZH |7I Nh0                var myFeatureSet2:FeatureSet = new FeatureSet([{geometry:thisGeometry}]);3sNews.Net——3S社区&资讯平台jgD3K5gAo
                var params:Object = { "inputPoly": featureSet1,3sNews.Net——3S社区&资讯平台d/tf2Y R2z r`
                                      "env:outSR": 4326,
7I K,f(D0k0                                      "env:processSR": 4326 };3sNews.Net——3S社区&资讯平台 c#T6\c!Mx(Q-E9Q
                gp.execute(params);               
ox[NAt BV0                // center on buffered feature3sNews.Net——3S社区&资讯平台1kP7[%u F~{"kY|
          //      var geometryPolygon : Polygon = thisGeometry as Polygon;                       3sNews.Net——3S社区&资讯平台Y'JLA+m
           //     myMap.centerAt(geometryPolygon.extent.center);
9VM6@Z/U u:o0            }
jy;G1r@0           3sNews.Net——3S社区&资讯平台u qyKyk9|
            private function onGeomFault( fe : FaultEvent, token : bject = null ) : void
wM"D&QEB/}:p0            {3sNews.Net——3S社区&资讯平台G+t2n5I"G!{ V
                this.cursorManager.removeBusyCursor();
#o!J#_n |h y0                if ( fe.type == "fault" && fe.fault.name == "Error" && fe.fault.faultString == "Error Executing Task" )3sNews.Net——3S社区&资讯平台~5H6~.Oza%MU${*?
                {3sNews.Net——3S社区&资讯平台E:F!f:@wL-t+{L
                    Alert.show( "Oops - no results.  Maybe try a smaller number." );
O9g"WD!g0                }3sNews.Net——3S社区&资讯平台B|"P5_0b6[;_'r
                else3sNews.Net——3S社区&资讯平台0X([,nK|5ir*we
                {
(\a"_%x!Z&E0                    Alert.show( "Unexpected fault:\n" + fe.toString() );
6Lx6Y4|6V#k0                }
)@6^8ZJ@0            }3sNews.Net——3S社区&资讯平台%b;LNJL} `3|
           3sNews.Net——3S社区&资讯平台g$P/tXi~.Ao
            private function onGPFault( fe : FaultEvent, token : bject = null ) : void
T"IVM)x+B4v'r0            {3sNews.Net——3S社区&资讯平台\$K T-}#R6JXQ"Mm G
                this.cursorManager.removeBusyCursor();3sNews.Net——3S社区&资讯平台$U,PU'mZ._/|$O
                if ( fe.type == "fault" && fe.fault.name == "Error" && fe.fault.faultString == "Error Executing Task" )3sNews.Net——3S社区&资讯平台{:^ Jp0u} Z3b
                {
2l'E9RG p8I0                    Alert.show( "Oops - no results.  Maybe try a smaller number." );3sNews.Net——3S社区&资讯平台}V ?4LvAi:Y1A%}d
                }
:v;_8Ip{[q0                else
?!e k#Xj D-SZ(B0                {3sNews.Net——3S社区&资讯平台$@x r a$sQC
                    Alert.show( "Unexpected fault:\n" + fe.toString() );3sNews.Net——3S社区&资讯平台&e"q!q]a'E
                }3sNews.Net——3S社区&资讯平台N Z2M\\)wB
            }
0`r q7oHL0            private function gpResult( event : GeoprocessorEvent) : void3sNews.Net——3S社区&资讯平台y/~A[+_
            {3sNews.Net——3S社区&资讯平台3_(Lx%_U]
                this.cursorManager.removeBusyCursor();3sNews.Net——3S社区&资讯平台'P @5NY5X/B1~){
                var pop:Number = event.executeResult.parameterValues[0].value.features[0].attributes.SUM;3sNews.Net——3S社区&资讯平台b0z1V*wr*Zi:m
                if (pop > 0)
dE(B!U0er'fy SW0                {3sNews.Net——3S社区&资讯平台x ~PU RF
                 var titleFormat:TextFormat = new TextFormat();
'~E \ JN[ n0     titleFormat.font = "Arial";
TK4Q2oaD k)s5ZF0     titleFormat.size = 14;
l1]-QH[0     titleFormat.bold = true;
0^ k3h \nm2v+k0     var contentFormat:TextFormat = new TextFormat();
QmWZm)|Q0     contentFormat.font = "Arial";
#[.E P*[ }~6q0     contentFormat.size = 12;
"@+Go3]psjr,`'R0                 var infoWindow:InfoWindowOptions = new InfoWindowOptions();
$bc7a{8uI0     infoWindow.title ="Peoples";
1]4e~w3sL$S.u0     infoWindow.titleFormat = titleFormat;
+P@ z7n!X;f~0     infoWindow.content = "There are about " + myNumberFormatter.format(pop) + " people in this area." ;
#QA(`5nM0     infoWindow.contentFormat = contentFormat;3sNews.Net——3S社区&资讯平台+o){.|-vm&J*N
    // infoWindow.customContent = canvas;
I.QU%wWu x[0     infoWindow.padding = 10;
6^'Vs\(S;C-_0     infoWindow.width = 150;
Z7O,T!i j(c2sq ]0     infoWindow.height = 100;3sNews.Net——3S社区&资讯平台2Lg_T}fVRw&W"v
        gMap.openInfoWindow(m_InfoWndPos,infoWindow); 
d`/I/^(Exp0                }
%b!mZn'N1rCb0                else3sNews.Net——3S社区&资讯平台"zndPo\Z
                {3sNews.Net——3S社区&资讯平台fIhb P*[3L
                    Alert.show( "Nobody lives here...");                   3sNews.Net——3S社区&资讯平台2V,Wno.NCB%xs
                }3sNews.Net——3S社区&资讯平台!wxv Y5ZQ*@
            }
o9WT{/LvW4i G0  private function addContextMenu():void {
j*j8Tr&f(O3DL0             var menu:ContextMenu = new ContextMenu();
+M7x|7L EbH0 3sNews.Net——3S社区&资讯平台'CTPk%X/Z
             var menuItem:ContextMenuItem = new ContextMenuItem("人口查询");
"H,nU2Hv)~X m0             menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void {
&ZxB b9[+J}u&K']1_0                var ll:LatLng = gMap.fromViewportToLatLng(new Point(e.mouseTarget.mouseX, e.mouseTarget.mouseY));3sNews.Net——3S社区&资讯平台%j+A8}n l l
          
'~C2L._~i3j6Mu0    //      gMap.fromViewportToLatLng(3sNews.Net——3S社区&资讯平台tXZ1g9f2Z-t
          var mapPnt:MapPoint = new MapPoint(ll.lng(),ll.lat());
(^}:La T:e0          m_InfoWndPos = ll;
jB FH:[;u0` BB0          mapPnt.spatialReference = sr;
yH.|8c k5@0          GMapAddOverlay(mapPnt);  
\m:sQ@0          bufferFeature(mapPnt);
rtp!f'vMJ*|`^B0             });3sNews.Net——3S社区&资讯平台*w)]5L(}-fC
             menu.customItems.push(menuItem);
GQ'R Xfdtf4xv"C/fm0              var menuItem1:ContextMenuItem = new ContextMenuItem("Drive Times");3sNews.Net——3S社区&资讯平台w:uA'r r5^ h0j
               menuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void {
g*O!B'V _.\z0                var ll:LatLng = gMap.fromViewportToLatLng(new Point(e.mouseTarget.mouseX, e.mouseTarget.mouseY));3sNews.Net——3S社区&资讯平台;}F.N%VlT'DV
          
jD$wD*c[#Z:St*X0    //      gMap.fromViewportToLatLng(
'Y8U[^7Q0          var mapPnt:MapPoint = new MapPoint(ll.lng(),ll.lat());3sNews.Net——3S社区&资讯平台:JzV9{;]Ig
          m_InfoWndPos = ll;3sNews.Net——3S社区&资讯平台uK2C%m'` ~ TG
          mapPnt.spatialReference = sr;3sNews.Net——3S社区&资讯平台_]9z"Do?'N#h
          GMapAddOverlay(mapPnt);  3sNews.Net——3S社区&资讯平台#if!J4L\JF!]
          computeServiceArea(mapPnt);3sNews.Net——3S社区&资讯平台$K/_/C#xi L3P
             });
.T:vd8Pi'Lw9v8iwW*f0             menu.customItems.push(menuItem1);3sNews.Net——3S社区&资讯平台}&}$|7V*SB0h
             var menuItem2:ContextMenuItem = new ContextMenuItem("Viewshed");
:w#_ Nc$R.k$Q*Pc0               menuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function(e:ContextMenuEvent):void {3sNews.Net——3S社区&资讯平台Xj4d*S s8t#K5o
                var ll:LatLng = gMap.fromViewportToLatLng(new Point(e.mouseTarget.mouseX, e.mouseTarget.mouseY));3sNews.Net——3S社区&资讯平台v J6@&F5D)q
          3sNews.Net——3S社区&资讯平台xwk}["Y3V0bL1t
    //      gMap.fromViewportToLatLng(3sNews.Net——3S社区&资讯平台G0c@,dZq:}
          var mapPnt:MapPoint = new MapPoint(ll.lng(),ll.lat());
%f;J2CJ/XF*w0          m_InfoWndPos = ll;
9FAT3Ixy0          mapPnt.spatialReference = sr;
A.AB_ h|!Es4Q`8rj0          GMapAddOverlay(mapPnt);  3sNews.Net——3S社区&资讯平台w3yH"w6Cc.B3t0sMD-@K
          computeViewshed(mapPnt);
u8l3fOn"P0             });
q+|xXQVV0             menu.customItems.push(menuItem2);3sNews.Net——3S社区&资讯平台/hH,C.jlqg
             menu.hideBuiltInItems();3sNews.Net——3S社区&资讯平台R5K%DvD }Q e.K;F
             this.gMap.contextMenu = menu;3sNews.Net——3S社区&资讯平台;~L@ hv*UJ)d
         }
-U|0tB7S$r0 private var driveTimes:String = "1 2 3";

            private function computeServiceArea( geom:Geometry ) : void3sNews.Net——3S社区&资讯平台mu.y%nw
            {3sNews.Net——3S社区&资讯平台r DGb4A3Ps5P4G*Jv
             
eJP5}Zs@s0                var graphic : Graphic = new Graphic(geom);
nJ2KK6Pp0                var featureSet:FeatureSet = new FeatureSet([graphic]);

                var params:Object = {
Ql n$K'@5H7s6L0                    "Input_Location" : featureSet,3sNews.Net——3S社区&资讯平台7QRT ^1{#^i
                    "Drive_Times" : driveTimes
jo'tK0VuP0]/M0                };
7}xL#P&@h j)uC0                gp1.execute(params, new AsyncResponder( onResult, onFault ));3sNews.Net——3S社区&资讯平台])M4?&l#}:Cd
                function onResult(3sNews.Net——3S社区&资讯平台6]6^N+qPau Q
                    gpResult : ExecuteResult,
`9C] G Ux.V*nnnr*v"i0                    token : bject = null
.Y7a)Nz}9z0                ) : void
{4R'}b6q+yE0                {3sNews.Net——3S社区&资讯平台7E5B'~4jewY:I!k'_
                    var pv : ParameterValue = gpResult.parameterValues[0];3sNews.Net——3S社区&资讯平台thq)~J__
                    var fs : FeatureSet = pv.value as FeatureSet;
p6[,C4P!@V0                    var i:int = 25600;
%iz,X0e4T#A;C8I;Y0                   for each ( var fea:Graphic in fs.features )3sNews.Net——3S社区&资讯平台8|6W1[ CZ!?
                   {3sNews.Net——3S社区&资讯平台] k-X0V,T
                    
C2nt;|3F8_0                    var polyOption:PolygonOptions = new PolygonOptions({ strokeStyle. new StrokeStyle({color:i,thickness: 4,alpha: 0.7}), fillStyle. new FillStyle({color: i,alpha: 0.7})})
-N7R}[p,z:tAv)t9]F0                    GMapAddPolygon(fea.geometry,polyOption);
TH,OzKN:L0                    i=i+15000;3sNews.Net——3S社区&资讯平台wC RX,O-Q]
                   }

                }
#{?4pzvN0                function onFault( info : Object, token : bject = null ) : void
ES5YTuhR igd0                {3sNews.Net——3S社区&资讯平台u|e.hHa
                    Alert.show( info.toString() );
v d?}Iof2K0                }3sNews.Net——3S社区&资讯平台8Z&E\L6b8_rQ0K4?9g/p%I
            }
Drsj g'No0            private var myViewshedDistance:LinearUnit = new LinearUnit();

            private function computeViewshed( geom:Geometry ) : void
-~ } lP;R ^0            {
^QN9UO0                this.cursorManager.setBusyCursor();3sNews.Net——3S社区&资讯平台W2S l a,Dk,{S
                var graphic : Graphic = new Graphic(geom);3sNews.Net——3S社区&资讯平台 ^q l0wzo
                var myFeatureSet:FeatureSet = new FeatureSet([graphic]);3sNews.Net——3S社区&资讯平台EZ~;c"M,bI4L9z
                myViewshedDistance.distance = Number(5);
gF*q Yd-o0                myViewshedDistance.units = "esriMiles";
'bEZU;ja1u0                var params:Object = { "Input_Observation_Point": myFeatureSet, "Viewshed_Distance": myViewshedDistance, "env:outSR": 4326 };3sNews.Net——3S社区&资讯平台s!N)Z,I S;T"~P(n
                gp2.execute(params);
Bsq"n [*W4W/l0            }

            private function executeCompleteHandler( event : GeoprocessorEvent) : void
4F&K){ J F0\0            {3sNews.Net——3S社区&资讯平台rU-tl Tj I
                for each ( var myGraphic : Graphic in event.executeResult.parameterValues[0].value.features )
m @zm;sD0                {
'yO_7zW7\P0                   GMapAddOverlay(myGraphic.geometry);3sNews.Net——3S社区&资讯平台[/ZfjM]T
                }
be$Q2}e"RS0                this.cursorManager.removeBusyCursor();
o-vPws0            }

            private function faultHandler( fe : FaultEvent, token : bject = null ) : void3sNews.Net——3S社区&资讯平台@2o?6V.Y
            {3sNews.Net——3S社区&资讯平台/yr jZ4c
                this.cursorManager.removeBusyCursor();3sNews.Net——3S社区&资讯平台%{']'['hm*a2W0C+YO/E ]
                if ( fe.type == "fault" && fe.fault.name == "Error" && fe.fault.faultString == "Error Executing Task" )3sNews.Net——3S社区&资讯平台\!Q~J#zp|
                {3sNews.Net——3S社区&资讯平台"Nv9A"Y.{Mh
                    Alert.show( "Oops - no results.  Maybe try a smaller number." );3sNews.Net——3S社区&资讯平台7}1[B*r5P yC
                }3sNews.Net——3S社区&资讯平台(_1GF wxI
                else
0Y+F CGk2D)i0                {
}T6TqdgL0                    Alert.show( "Unexpected fault:\n" + fe.toString() );
(W d0m6R+q^ t0                }
t2_*c5a5Y}0            }3sNews.Net——3S社区&资讯平台@b'V ^)a/Ogf
         ]]>3sNews.Net——3S社区&资讯平台M$e6\2} g B4\zX
      
I3X4H N8c,K} M0    </mx:Script>
&P9Y(Y*L!X)H0<esri:SpatialReference id="sr" wkid="4326"/>    3sNews.Net——3S社区&资讯平台 \|oX$zy#kn
<esri:GeometryService id="myGeometryService"        fault="onGeomFault(event)"        url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/3sNews.Net——3S社区&资讯平台Vj w d d/B%S7d
<esri:Geoprocessor        id="gp"        fault="onGPFault(event)"        executeComplete="gpResult(event)"        url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Population_World/GPServer/PopulationSummary"    />3sNews.Net——3S社区&资讯平台j@aO%c}#uoZM'w
<esri:Geoprocessor id="gp1" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Network/ESRI_DriveTime_US/GPServer/CreateDriveTimePolygons"/>
$p6a5WZ&Y/s0 <esri:Geoprocessor3sNews.Net——3S社区&资讯平台ib[?o-q)D*cvd
        id="gp2"3sNews.Net——3S社区&资讯平台4p*[1nr9^5T f
        url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed"3sNews.Net——3S社区&资讯平台3r:] B7D#tcy({
        executeComplete="executeCompleteHandler(event)"3sNews.Net——3S社区&资讯平台` U*k Ju4x
        fault="faultHandler(event)"
'rJ'H?J1^H*n1D)f$v0    />3sNews.Net——3S社区&资讯平台`:v"w5eZ+U"cm^%i
<mx:NumberFormatter id="myNumberFormatter" useThousandsSeparator="true" precision="0"/>
8K-?,m#A(A4P#[d9A0   3sNews.Net——3S社区&资讯平台 Gvyh,J`5no
<mx:Canvas  width="100%" height="100%">3sNews.Net——3S社区&资讯平台)M wG(d9g
  <mx:UIComponent id="mapContainer" width="100%" height="100%"
$dNX1W |{0               initialize="initGMap()"3sNews.Net——3S社区&资讯平台}G zB9RAJ a5^X
               resize="GMapResize(event) " >3sNews.Net——3S社区&资讯平台1{(]R*sW"^q
  </mx:UIComponent>
%Vi!{&_e \7a0<mx:Label text="使用方法:右键单击鼠标选择人口查询,可查询该点3000米范围内的人口数量"  />3sNews.Net——3S社区&资讯平台2YJ(\)Qb
</mx:Canvas>

</mx:Application>


TAG:

 

评分:0

我来说两句

显示全部

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

Open Toolbar