GeometryService方法研究之intersect

此方发可以判断一组geometry与某个geometry是否相交


myGeometryService.intersect(geoArr,testgeo,new AsyncResponder(ResultHandle2,FaultHandle2));
function ResultHandle2(arrGraphic:Array, token:Object = null):void{
1.如果 arrGraphic 类型为Polygon,此数组数组大于0,说明有相交的地方

如果是面相交arrGraphic的rings数组值大于0;

如果是点和线相交arrGraphic的rings数组值等于0;



}


function FaultHandle2(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}


如下图所示





增加一个方法学习

protected function testBtn1_clickHandler(event:MouseEvent):void
{
var wkt:String = "POLYGON((108.49865570600002 30.664672235000012,108.50770146500004 30.66732200299998,108.51230810200002 30.66534229199999,108.515827801 30.655754016000003,108.500713464 30.64970066699999,108.49423942700002 30.660065599000006,108.49865570600002 30.664672235000012))";
var geo:Geometry = WKT.WKT2Geometry(wkt,map.spatialReference);
var geoArr:Array = new Array();
geoArr.push(geo);
myGeometryService.cut(geoArr,lineGraphic.geometry as Polyline,new AsyncResponder(ResultHandle,FaultHandle));

function ResultHandle(cr:CutResult, token:Object = null):void{
if(cr.geometries.length == 2){
var geo1:Geometry = cr.geometries[0];
var gra1:Graphic = new Graphic();
var resultFillSymbol1:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x8470FF,0.5,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x8470FF,0.8,2));
gra1.geometry = geo1;
gra1.symbol = resultFillSymbol1;
map.defaultGraphicsLayer.add(gra1);

var geo2:Geometry = cr.geometries[1];
var gra2:Graphic = new Graphic();
var resultFillSymbol2:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x847000,0.5,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x847000,0.8,2));
gra2.geometry = geo2;
gra2.symbol = resultFillSymbol2;
map.defaultGraphicsLayer.add(gra2);

// var wkttest:String = "POLYGON((108.49865570600002 30.664672235000012,108.49397387924492 30.66694414480465,108.4983711231837 30.667686536638463,108.49865570600002 30.664672235000012))"
// var testgeo:Geometry = WKT.WKT2Geometry(wkttest,map.spatialReference);
// var gra3:Graphic = new Graphic();
// var resultFillSymbol2:SimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,0x847000,0.5,
// new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,0x847000,0.8,2));
// gra3.geometry = testgeo;
// gra3.symbol = resultFillSymbol2;
// map.defaultGraphicsLayer.add(gra3);



var geoArr:Array = new Array();
geoArr.push(geo1);
myGeometryService.intersect(geoArr,geo2,new AsyncResponder(ResultHandle2,FaultHandle2));
function ResultHandle2(arrGraphic:Array, token:Object = null):void{
var a:int = 0;
if(arrGraphic.length>0){
for each(var pol:Polygon in arrGraphic){
if(pol.rings.length == 0){
Alert.show("点或线相交");
a++;
}else{
Alert.show("面相交");
}
}
if(a == arrGraphic.length){
Alert.show("验证通过");
}
}else{
Alert.show("不相交");
}

}


function FaultHandle2(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}

}else{
Alert.show("切割后不是2个面");
}


}


function FaultHandle(info:Object, token:Object = null):void{
Alert.show(info.toString(), "提示");
}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值