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/MapServer
map = 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 time
mGraphic = 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;
}
}
@Override
protected void onPause() {
super.onPause();
map.pause();
}
@Override
protected void onResume() {
super.onResume();
map.unpause();
}
}
分享到:
相关推荐
ArcEngine选择要素 包括点选、框选、圆圈选以及多边形选择
Openlayers框选要素包括圆形框选 ,多边形框选要素,四边形框选要素,展示要素信息,统计框选要素数量
openlayers3点选、框选、多边形选择点要素,供代码参考吧
在C#+AE编程中,我们往往需要闪烁或高亮显示选定的要素,本程序通过多种方式实现了这两种功能。其中,显示的要素是由用户框选的方式指定的。
arcengine实现点选,圆选,框选,多边形选择要素
ArcGIS AE 二次开发,实现点要素、线要素和面要素的绘制,以及移动、打断,延长,画线分割、删除等操作
在iClient for javascript中selectFeature控件可以实现Feature要素的鼠标事件交互,但都是点选交互;本范例通过实现扩展SuperMap.Control实现拉框选取Feature要素
代码经本人调试运行可行,功能肯定有不完善的地方,希望大家提出修正意见,我会及时改正,在运行时点击属性查询按钮,然后鼠标在地图上选择一个要素就可以弹出属性信息,并且显示要素的类型。欢迎大家下载交流。
通过在地图上绘制区域来选择要素的插件。 支持使用1.2.0测试的Leaflet 1.0.0+分支。 启用此插件后,用户只需按住鼠标左键并移动它,即可在地图上绘制区域。 作为开发人员,您可以获取该区域边界框中的图层。 一旦...
利用AE+C#实现 框选要素 弹出要素属性值的地图查询功能
C#+AE实现地图要素点选和框选查询属性集功能
1,geoserver:地图服务器, 2,map_shp:地图shp 数据 (全国省界+县道) 3,GeoserverToolDemo: a绘点 b点击地图街道选中要素 c框选要素。
点击查询 点击或框选需要查看的实体,即可弹出该实体的属性信息窗体。如果要素字段中有图 片信息,双击图片字段名称,即可打开对应图片。 属性查询 选择要查询的图层及查询条件,通过SQL语句查询满足条件的实体及其...
openlayers3+中实现点选、圈选、框选、多边形选择点要素,主要实现地图通过框选来获取区域的内容
(1) 空间查询 系统提供点选、框选、圆选、折线选取等基本的几何空间查询。 (2) 属性查询 根据指定字段的属性输入查询条件,从空间数据库或客户端中查询满足条件的相关信息。 (3) 联合查询 ...
加载正确shp文件,实现鹰眼,打开属性表,进行属性查询和右键框选要素,代码部分可见:https://blog.csdn.net/nominior/article/details/84795303
您必须先选中要素制图表达,然后才能对其进行修改。要选中它们,其所在的图层必须是可选的。使用内容列表 窗口的按选择列出视图,可以使通过制图表达绘制的图层像其他地图图层那样变为可选图层。
(1) 空间查询 系统提供点选、框选、圆选、折线选取等基本的几何空间查询。 (2) 属性查询 根据指定字段的属性输入查询条件,从空间数据库或客户端中查询满足条件的相关信息。 (3) 联合查询 ...
3、数据浏览 全图显示 直接放大 直接缩小 框选放大 框选缩小 地图无极缩放(滚轮) 地图漫游 前一视图 后一视图 鹰眼图 缩放到图层 缩放到选择目标 地图比例尺 显示图例 状态显示 4、数据选择 点选、多选、框选、...
3、数据浏览 全图显示 直接放大 直接缩小 框选放大 框选缩小 地图无极缩放(滚轮) 地图漫游 前一视图 后一视图 鹰眼图 缩放到图层 缩放到选择目标 地图比例尺 显示图例 状态显示 4、数据选择 点选、多选、框选、...