widget代码:
<?xml version="1.0" encoding="utf-8"?>
<viewer:BaseWidget xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:viewer="com.esri.viewer.*"
xmlns:esri="http://www.esri.com/2008/ags"
layout="absolute"
width="100%" height="100%"
>
<fx:Style>
@namespace esri "http://www.esri.com/2008/ags";
@namespace mx "library://ns.adobe.com/flex/mx";
esri|InfoWindow
{
backgroundAlpha: 0.8;
backgroundColor: #353930;
borderThickness: 0;
infoPlacement: top;
shadowAlpha: 0.5;
shadowDistance: 10;
upperRightRadius: 0;
}
mx|ToolTip
{
backgroundColor: #E4342A;
color: #FFFFFF;
fontFamily: "Helvetica";
fontSize: 14;
}
</fx:Style>
<fx:Script>
<![CDATA[
import com.esri.ags.FeatureSet;
import com.esri.ags.Graphic;
import com.esri.ags.events.GraphicEvent;
import com.esri.ags.events.MapMouseEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.FeatureLayer;
import com.esri.ags.layers.GraphicsLayer;
import com.esri.ags.layers.Layer;
import com.esri.ags.tasks.QueryTask;
import com.esri.ags.tasks.supportClasses.Query;
import mx.controls.Alert;
import mx.rpc.AsyncResponder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.core.Application;
import mx.formatters.DateFormatter;
import mx.managers.CursorManager;
[Embed(source="assets/images/iMouse.png")]
private var imageCursor:Class;
private var isSearch:Boolean=true;
private var dateFormatter:DateFormatter = new DateFormatter();
private function msToDate(ms:Number, dateFormat:String, useUTC:Boolean):String
{
var date:Date = new Date(ms);
if (date.milliseconds == 999) // workaround for REST bug
{
date.milliseconds++;
}
if (useUTC)
{
date.minutes += date.timezoneOffset;
}
if (dateFormat)
{
dateFormatter.formatString = dateFormat;
var result:String = dateFormatter.format(date);
if (result)
{
return result;
}
else
{
return dateFormatter.error;
}
}
else
{
return date.toLocaleString();
}
}
private function myMap_mapClickHandler(event:MapMouseEvent):void
{
map.defaultGraphicsLayer.clear();
var query:Query = new Query();
query.outSpatialReference = map.spatialReference;
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
query.geometry = event.mapPoint;
query.returnGeometry=true;
var url:String=Application.application.currentURL+"/0";
if(url.indexOf("TDCB")>-1){
query.outFields=["DKBH","DKMC","DKWZ","DKZT","RKMJ","RKRQ","CKMJ","SYMJ"];
}else{
query.outFields=["QPH","TDJB","JZDJ","QPFW","MJ","FJDZ","DJRQ","KFCD"];
}
var queryTask:QueryTask=new QueryTask();
queryTask.showBusyCursor=true;
queryTask.url=url;
queryTask.method=URLRequestMethod.POST;
queryTask.execute(query, new AsyncResponder(onResult, onFault,null));
function onResult(featureSet:FeatureSet, token:XMLList = null):void
{
map.defaultGraphicsLayer.clear();
if(featureSet.features.length==0){
map.infoWindow.hide();
mx.controls.Alert.show("未查到");
}
if(url.indexOf("TDCB")>-1){
for each (var graphic:Graphic in featureSet.features)
{
var p:Graphic=new Graphic();
p.symbol=greenSymbol;
p.geometry=graphic.geometry;
map.defaultGraphicsLayer.add(p);
var obj:Object=graphic.attributes;
var poi2:PoiDetails2=new PoiDetails2();
poi2.DKBH=obj.DKBH;
poi2.DKMC=obj.DKMC;
poi2.DKWZ=obj.DKWZ;
poi2.DKZT=obj.DKZT;
poi2.RKMJ=obj.RKMJ;
var dateMS:Number = Number(obj.RKRQ);
if (!isNaN(dateMS))
{
poi2.RKRQ=msToDate(dateMS, "YYYY-MM-DD", true);
}
poi2.CKMJ=obj.CKMJ;
poi2.SYMJ=obj.SYMJ;
map.infoWindowContent = poi2;
map.infoWindow.show(event.mapPoint);
}
}else{
for each (var graphic1:Graphic in featureSet.features)
{
var p1:Graphic=new Graphic();
p1.symbol=greenSymbol;
p1.geometry=graphic1.geometry;
map.defaultGraphicsLayer.add(p1);
var obj1:Object=graphic1.attributes;
var poi:PoiDetails=new PoiDetails();
poi.QPH=obj1.QPH;
poi.TDJB=obj1.TDJB;
poi.JZDJ=obj1.JZDJ;
poi.QPFW=obj1.QPFW;
poi.MJ=obj1.MJ;
poi.FJDZ=obj1.FJDZ;
var dateMS:Number = Number(obj1.DJRQ);
if (!isNaN(dateMS))
{
poi.DJRQ=msToDate(dateMS, "YYYY-MM-DD", true);
}
poi.KFCD=obj1.KFCD;
map.infoWindowContent = poi;
map.infoWindow.show(event.mapPoint);
}
}
}
function onFault(info:Object, token:Object = null):void
{
map.defaultGraphicsLayer.clear();
map.infoWindow.hide();
mx.controls.Alert.show("查询失败");
}
}
private function do_Click():void
{
if(isSearch){
map.addEventListener(MapMouseEvent.MAP_CLICK,myMap_mapClickHandler);
map.infoWindow.addEventListener(Event.CLOSE,function():void{map.defaultGraphicsLayer.clear();});
CursorManager.setCursor(imageCursor)
isSearch=false;
}else{
map.defaultGraphicsLayer.clear();
map.infoWindow.hide();
map.removeEventListener(MapMouseEvent.MAP_CLICK,myMap_mapClickHandler);
CursorManager.removeAllCursors();
isSearch=true;
}
}
]]>
</fx:Script>
<fx:Declarations>
<esri:SimpleFillSymbol id="greenSymbol" alpha="0.2" color="0x009933"/>
</fx:Declarations>
<s:ToggleButton id="iSearchBtn" label="i查询" click="do_Click();" buttonMode="true" />
</viewer:BaseWidget>
弹出框代码:
<?xml version="1.0" encoding="utf-8"?>
<s:VGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
top="-27" >
<fx:Script>
<![CDATA[
[Bindable]
private var _QPH:String;
[Bindable]
private var _TDJB:String;
[Bindable]
private var _JZDJ:String;
[Bindable]
private var _QPFW:String;
[Bindable]
private var _MJ:String;
[Bindable]
private var _FJDZ:String;
[Bindable]
private var _DJRQ:String;
[Bindable]
private var _KFCD:String;
public function get QPH():String
{
return _QPH;
}
public function set QPH(value:String):void
{
_QPH = "" + value;
}
public function get TDJB():String
{
return _TDJB;
}
public function set TDJB(value:String):void
{
_TDJB = "" + value;
}
public function get JZDJ():String
{
return _JZDJ;
}
public function set JZDJ(value:String):void
{
_JZDJ =""+ value;
}
public function get QPFW():String
{
return _QPFW;
}
public function set QPFW(value:String):void
{
_QPFW =""+value;
}
public function get MJ():String
{
return _MJ;
}
public function set MJ(value:String):void
{
if(value==null){
_MJ ="0";
}else{
var index:int=value.indexOf('.');
if(index>-1){
_MJ=value.substring(0, index+3);
}else{
_MJ =value;
}
}
}
public function get FJDZ():String
{
return _FJDZ;
}
public function set FJDZ(value:String):void
{
if(value==null){
_FJDZ="";
}else{
_FJDZ=value;
}
}
public function get DJRQ():String
{
return _DJRQ;
}
public function set DJRQ(value:String):void
{
_DJRQ =""+value;
}
public function get KFCD():String
{
return _KFCD;
}
public function set KFCD(value:String):void
{
_KFCD =""+value;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<s:Group left="5" width="250" right="5">
<s:Label text="区片号:{_QPH}" left="10" top="10" styleName="widgetLabel" fontSize="14" />
<s:Rect left="0" right="0" height="1" top="33">
<s:fill>
<s:SolidColor color="#CCCCCC" />
</s:fill>
</s:Rect>
<s:VGroup gap="3" width="100%" height="100%" top="40" paddingLeft="10">
<s:Label text="土地级别:{_TDJB}" width="100%" styleName="widgetLabel"
visible="{_TDJB!=null}" includeInLayout="{_TDJB!=null}"/>
<s:Label text="基准地价:{_JZDJ}" width="100%" styleName="widgetLabel"
visible="{_JZDJ!=null}" includeInLayout="{_JZDJ!=null}"/>
<s:Label text="区片范围:{_QPFW}" width="100%" styleName="widgetLabel"
visible="{_QPFW!=null}" includeInLayout="{_QPFW!=null}"/>
<s:Label text="面积:{_MJ}平方米" width="100%" styleName="widgetLabel"
visible="{_MJ!=null}" includeInLayout="{_MJ!=null}"/>
<s:Label text="附件地址:{_FJDZ}" width="100%" styleName="widgetLabel"
visible="{_FJDZ!=null}" includeInLayout="{_FJDZ!=null}"/>
<s:Label text="地价日期:{_DJRQ}" width="100%" styleName="widgetLabel"
visible="{_DJRQ!=null}" includeInLayout="{_DJRQ!=null}"/>
<s:Label text="开发程度:{_KFCD}" width="100%" styleName="widgetLabel"
visible="{_KFCD!=null}" includeInLayout="{_KFCD!=null}"/>
</s:VGroup>
</s:Group>
</s:VGroup>
效果如图: