ArcGis For Flex 之 QueryTask地理坐标展现【原创】
本功能仿照Google Map分类搜索做的,可以看Google效果:http://ditu.google.cn/maps?hl=zh-CN&tab=wl
现在说说从查询到画出标注的具体经过,贴代码,注释写的也不多,有兴趣深究的可以到官方API查询
下面的代码是查询,并画出标注:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /*************************** * 地标-地理定位数字化展现 ***************************/ public function ReaderLandMark(landMarkSearchWhere:String):void { clearAllGraphicsLayers(); queryUrl=sLandMarkUrl + "/0" ; query.where=landMarkSearchWhere; query.outFields= new Array( 'NID' , 'CNAME' , 'CTYPE' , 'CPROVINCE' , 'CCITIES' , 'CCOUNTY' , 'CROAD' , 'CHOUSENUM' , 'NLON' , 'NLAT' ); queryTaskGsm.execute(query, new AsyncResponder(onResult, onFault)); function onResult(featureSet:FeatureSet, token:Object= null ):void { glLandMark.clear(); //清空图层 var displayFieldName:String=featureSet.displayFieldName; var count:int=1; var arrColl:ArrayCollection; var txtSysmbol:TextSymbol; var compSysmbol:CompositeSymbol; var tFormat:TextFormat= new TextFormat(); tFormat.bold= false ; tFormat.size=10; tFormat.font= "Verdana" ; for each ( var myGraphic:Graphic in featureSet.features) { arrColl= new ArrayCollection(); txtSysmbol= new TextSymbol(count.toString(), null , 0x070707); txtSysmbol.textFormat=tFormat; arrColl.addItem( new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 20, 0xFE776B)); arrColl.addItem(txtSysmbol); compSysmbol= new CompositeSymbol(); compSysmbol.symbols=arrColl; myGraphic.toolTip=myGraphic.attributes.CNAME; myGraphic.symbol=compSysmbol; glLandMark.add(myGraphic); count++; } } function onFault(info:Object, token:Object= null ):void { Alert.show(info.toString(), "Query Problem" ); } } |
然后是datagrid的行单击,实现标注的高亮特效,还是比较炫的哦,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //datagrid 单击 protected function dgClick(e:MouseEvent):void { var itemR:DataGridItemRenderer=e.target as DataGridItemRenderer; if (!itemR) { return ; } var pt:MapPoint= new MapPoint(itemR.data.NLON, itemR.data.NLAT); if (!parentApplication.Map.extent.contains(pt)) { parentApplication.Map.centerAt(pt); } var pictureMarker:PictureMarkerSymbol= new PictureMarkerSymbol( "assets/flash/Red_glow.swf" , 40, 40, -11, 10); var myGraphic:Graphic= new Graphic(pt, pictureMarker); myGraphic.name= "ghTopicByLandMark" ; var removeGraphic:Graphic=parentApplication.glLandMark.getChildByName( "ghTopicByLandMark" ); if (removeGraphic) { parentApplication.glLandMark.remove(removeGraphic); } parentApplication.glLandMark.add(myGraphic); } |
OK,完成了。。。。。。。。。。。。有错误和有待优化的地方请留言指正!
分类:
ArcGis For Flex
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
2009-06-01 上传图片在客户端用Javascript做图片检验,并显示图片缩略图
2009-06-01 HQL查询