ARCGIS viewer入门(6)复杂图元图查属性

25 篇文章 0 订阅

参见SearchWidget源代码,以上是精炼材料

(1)鼠标事件

private function activateDrawTool(event:MouseEvent):void

{
addSharedData("Deactivate_DrawTool", null); // to be able to deactivate drawTool on other widgets


// apply glow
selectedDrawingIcon = Image(event.currentTarget);
clearSelectionFilter();
selectedDrawingIcon.filters = [ glowFilter ];


finishDrawing = false;


var status:String;
var value:String = selectedDrawingIcon.name;
switch (value)
{
case DrawTool.MAPPOINT://点查图

{
status = pointLabel;
drawSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 15, 0x3FAFDC, 1);
break;
}
case DrawTool.POLYLINE://线查图

{
status = lineLabel;
drawSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, 0x3FAFDC, 1, 1);
break;
}
case DrawTool.EXTENT://矩形查图

{
status = rectangleLabel;
drawSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, 0x3FAFDC, 0.5, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, 0x3FAFDC, 1, 1));
break;
}
case DrawTool.POLYGON://多变形查图
{
status = polygonLabel;
drawSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, 0x3FAFDC, 0.5, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, 0x3FAFDC, 1, 1));
break;
}
}
setMapAction(value, status, drawSymbol, searchDrawEnd);

}


(2)searchDrawEnd图查过度函数

private function searchDrawEnd(event:DrawEvent):void
{
// deactivate the draw tool
finishDrawing = true;


selectedDrawingIcon = null;
clearSelectionFilter();


event.target.deactivate();
var geom:Geometry = event.graphic.geometry;

//简化图层
if (geom is Polygon && GeometryUtil.polygonSelfIntersecting(geom as Polygon))
{
geometryService.simplify([ geom ]);
}
else
{
//to improve search results
if (geom.type == Geometry.MAPPOINT)
{
geom = createExtentAroundMapPoint(geom as MapPoint, pointSearchTolerance);
}


queryFeaturesGraphical(geom);
}
}

(3)关键函数:(该方法完全可以参考arcigs server flex api)

private function queryFeaturesGraphical(geom:Geometry):void
{
hideInfoWindow();


var i:int = cboLayerGraphical.selectedIndex;
queryLayer = configSearchGraphical[i].layer;//关键方法,得到查询的图层

if (queryLayer && !queryLayer.loaded)
{
queryLayer.addEventListener(LayerEvent.LOAD, queryLayer_loadHandler);
function queryLayer_loadHandler(event:LayerEvent):void
{
queryFeaturesGraphical(geom)
}
return;
}


queryGeom = geom;
queryFields = configSearchGraphical[i].fields;
queryTitleField = configSearchGraphical[i].titlefield;
queryLinkField = configSearchGraphical[i].linkfield;
queryLinkAlias = configSearchGraphical[i].linkalias;


if (queryLayer)
{
var query:Query = new Query();
query.geometry = queryGeom;
query.spatialRelationship = Query.SPATIAL_REL_INTERSECTS;
query.outSpatialReference = map.spatialReference;
queryLayer.queryFeatures(query, new AsyncResponder(onResult, onFault, queryFields));
showMessage(loadingLabel, true);
showStateResults();



function onResult(featureSet:FeatureSet, token:XMLList = null):void
{
try
{
searchResultAC = createSearchResults(featureSet, token);


addSharedData(widgetTitle, searchResultAC);//查到的图元,增加到上节说的共享数据区域,提供其他插件或本身使用。
if (featureSet.features.length < 1)
{
showMessage(noResultLabel, false);
}
else
{
showMessage(selectionLabel + " " + featureSet.features.length, false);
}
}
catch (error:Error)
{
showMessage(error.message, false);
}
}


function onFault(info:Object, token:Object = null):void
{
showMessage(info.toString(), false);
}
}
}


这个例子存在小问题,只有点查的时候,会无法得到数据,留做一个记号,就不写原因了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值