此方发可以判断一组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(), "提示");
}
}