首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

框选因素查询

2012-09-24 
框选要素查询public class SelectFeatures extends Activity {private MapView map nullprivate ArcGIS

框选要素查询

public class SelectFeatures extends Activity {private MapView map = null;private ArcGISFeatureLayer mFeatureLayer = null;private GraphicsLayer mGraphicsLayer = null;private SimpleFillSymbol mSimpleFillSymbol;int test = 0;private CallbackListener<FeatureSet> callback = new CallbackListener<FeatureSet>() {public void onCallback(FeatureSet fSet) {}public void onError(Throwable arg0) {mGraphicsLayer.removeAll();}};public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// http://192.168.200.183/ArcGIS/rest/services/HA_BaseLayer/MapServer// http://192.168.200.183/ArcGIS/rest/services/HA_BZW/MapServer// http://192.168.200.183/ArcGIS/rest/services/HA_BuJian/MapServermap = new MapView(this);if (test == 0) {// 设置加载范围map.setExtent(new Envelope(-10868502.895856911, 4470034.144641369,-10837928.084542884, 4492965.25312689), 0);}String tileLayerURL = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";// 瓦片图层if (test == 1) {tileLayerURL = "http://192.168.200.183/ArcGIS/rest/services/HA_BaseLayer/MapServer";}ArcGISTiledMapServiceLayer tileLayer = new ArcGISTiledMapServiceLayer(tileLayerURL);map.addLayer(tileLayer);addFeatureLayer();// 添加属性图层addGraphicesLayer();// 添加要素图层// 注册图层触摸事件MyTouchListener touchListener = new MyTouchListener(this, map);map.setOnTouchListener(touchListener);}private void addGraphicesLayer() {mGraphicsLayer = new GraphicsLayer();mSimpleFillSymbol = new SimpleFillSymbol(Color.BLACK);// 填充色mSimpleFillSymbol.setOutline(new SimpleLineSymbol(Color.BLUE, 1));// 外框线mSimpleFillSymbol.setAlpha(100);map.addLayer(mGraphicsLayer);setContentView(map);}private void addFeatureLayer() {Options mOptions = new Options();mOptions.mode = MODE.ONDEMAND;mOptions.outFields = new String[] { "FIELD_KID", "APPROXACRE","FIELD_NAME", "STATUS", "PROD_GAS", "PROD_OIL", "ACTIVEPROD","CUMM_OIL", "MAXOILWELL", "LASTOILPRO", "LASTOILWEL","LASTODATE", "CUMM_GAS", "MAXGASWELL", "LASTGASPRO","LASTGASWEL", "LASTGDATE", "AVGDEPTH", "AVGDEPTHSL","FIELD_TYPE", "FIELD_KIDN" };if (test == 1) {mOptions = new Options();mOptions.mode = MODE.ONDEMAND;mOptions.outFields = new String[] { "OBJECTID", "OBJCODE","OBJNAME", "DEPTCODE1", "DEPTNAME1", "DEPTCODE2","DEPTNAME2", "DEPTCODE3", "DEPTNAME3", "OBJSTATE","CHDATE", "DATASOURCE", "NOTE", "OBJPHOTO", "ORDATE","OBJPOS", "BGCODE", "SHAPE", };}// 属性图层String featureURL = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Petroleum/KSPetro/MapServer/1";if (test == 1) {featureURL = "http://192.168.200.183/ArcGIS/rest/services/HA_BuJian/MapServer/4";// 公用设施部件}mFeatureLayer = new ArcGISFeatureLayer(featureURL, mOptions);// 设置选中属性的颜色SimpleFillSymbol selectFillSymbol = new SimpleFillSymbol(Color.MAGENTA);selectFillSymbol.setOutline(new SimpleLineSymbol(Color.BLACK, 1));mFeatureLayer.setSelectionSymbol(selectFillSymbol);map.addLayer(mFeatureLayer);}class MyTouchListener extends MapOnTouchListener {Graphic mGraphic;Point mFromPoint = null;// 起点int uid = -1;public MyTouchListener(Context arg0, MapView arg1) {super(arg0, arg1);}public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {if (uid == -1) { // first timemGraphic = new Graphic(null, mSimpleFillSymbol);mFromPoint = map.toMapPoint(from.getX(), from.getY());uid = mGraphicsLayer.addGraphic(mGraphic);} else {// 终点Point mToPoint = map.toMapPoint(new Point(to.getX(), to.getY()));Envelope envelope = new Envelope();envelope.merge(mFromPoint);envelope.merge(mToPoint);mGraphicsLayer.updateGraphic(uid, envelope);}return true;}public boolean onDragPointerUp(MotionEvent from, MotionEvent to) {if (uid != -1) {mGraphic = mGraphicsLayer.getGraphic(uid);if (mGraphic != null && mGraphic.getGeometry() != null) {mFeatureLayer.clearSelection();Query mQuery = new Query();// 设置查询参数if (test == 1) {mQuery.setWhere("OBJNAME='上水井盖'");}if (test == 0) {mQuery.setWhere("PROD_GAS='Yes'");// 查询条件Yes or No}mQuery.setReturnGeometry(true);mQuery.setInSpatialReference(map.getSpatialReference());mQuery.setGeometry(mGraphic.getGeometry());mQuery.setSpatialRelationship(SpatialRelationship.INTERSECTS);// 查询到的信息高亮显示mFeatureLayer.selectFeatures(mQuery, SELECTION_METHOD.NEW,callback);}mGraphicsLayer.removeAll();}mFromPoint = null;// 重置uid = -1;return true;}}@Overrideprotected void onPause() {super.onPause();map.pause();}@Overrideprotected void onResume() {super.onResume();map.unpause();}}
?

热点排行