我做的是移網基站,和妳的有些類似,其實只要在圖層中用不同顏色去給Geometry上色就行了。
/*通過用戶繪制壹個任意多邊形在基站中查圖層,有點圖層和面圖層,妳只需要關註面圖層就行了*/
if(geometry.type == "polygon"){
?var graphicPolygon = new esri.Graphic(geometry, fillSymbol); ?baseMap.graphics.add(graphicPolygon); ?var bSUrl = baseStationUrl; ?bSUrl = bSUrl.replace("{G}", "2G");/*********************************查第壹個圖層(點圖層)*************************************************/? ?
?var query1 = new esri.tasks.Query(); ?var queryTask1 = new esri.tasks.QueryTask(bSUrl+"/0"); ? ?query1.geometry=geometry; ?query1.spatialRelationship = esri.tasks.Query.SPATIAL_REL_CONTAINS; ?//query.text=searchText; ?//過濾結果集attributes中包含字段 ?query1.outFields = ["*"]; ?//是否返回Geometry ?query1.returnGeometry = true; ?//執行查詢,返回結果集 ?queryTask1.execute(query1, results1); ?/**********************************查第二個圖層(面圖層)**************************************************/
?var query2 = new esri.tasks.Query(); ?var queryTask2 = new esri.tasks.QueryTask(bSUrl+"/1"); ? ?query2.geometry=geometry; ?query2.spatialRelationship = esri.tasks.Query.SPATIAL_REL_OVERLAPS; ?//query.text=searchText; ?//過濾結果集attributes中包含字段 ?query2.outFields = ["*"]; ?//是否返回Geometry ?query2.returnGeometry = true; ?//執行查詢,返回結果集 ?queryTask2.execute(query2, results2);}
/*查面圖層後的回調函數,我只是把有相交的面上色了*/
function results2(evt2){
var lineSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new esri.Color([ 0,0,255]), 1);
var fillSymbol = new esri.symbol.SimpleFillSymbol(
?esri.symbol.SimpleFillSymbol.STYLE_SOLID, ?lineSymbol, ?new esri.Color([ 205, 0, 205, 0.5 ]) ?);
var length2= evt2.features.length;
for(var i=0;i<length2;i++){//循環上色
?var geometry2 = evt2.features[i].geometry; ?var graphicPolygon2 = new esri.Graphic(geometry2, fillSymbol); ?baseMap.graphics.add(graphicPolygon2);}
}