`

点选的实现

    博客分类:
  • GIS
 
阅读更多
	public class eMyMapWnd2 extends eMyMapWnd {
		public eMyMapWnd2(Context context) {
			super(context);
		}

		@Override
		public void OnGeometrySelected(int count) {

			// 点选-----------------------------------------------------
			int c = m_myMapWnd.GetMap().Selection().GetCount();

			if (c > 0) {
				eMyResultSet rs = m_myMapWnd.GetMap().Selection().GetAt(0);
				rs.Reset();
				int fieldCount = rs.GetLayer().GetFieldCount();

				// 获得点选详情
				while (rs.HasNext()) {
					String text = "";
					// 取x,y坐标
					eMyPoint point = rs.GetGeometry().GetPointAt(0);
					x = point.GetX();
					y = point.GetY();
					String xy = "逻辑坐标:( " + x + ") , (" + y + " )";
					text += xy;
					System.out.println(xy);
					text += "\n";

					eMyPoint2D point2D = m_myMapWnd.GetMap().MapToGeo(point);
					x = point2D.GetX();
					y = point2D.GetY();
					xy = "物理坐标:( " + x + ") , (" + y + " )";
					text += xy;
					System.out.println(xy);
					text += "\n";

					// 其他信息:名称,id,城市,所在区,类别码,地理编码
					for (int i = 0; i < fieldCount; i++) {
						text += rs.GetLayer().GetFieldAt(i).GetName();
						text += ":";
						text += rs.GetString(i);
						text += "\n";
					}
					Toast.makeText(this.getContext(), text, 9000).show();

					// 分别取点的属性
					System.out.println("------------------------------");
					String s1 = rs.GetString((short) 0).toString();// 获得点名称
					String s = s1.replaceAll("\\s1+", "");
					System.out.println("名称:" + s);

					s1 = rs.GetString((short) 1).toString();// 获得点ID
					s = s1.replaceAll("\\s1+", "");
					System.out.println("ID:" + s);

					s1 = rs.GetString((short) 2).toString();// 获得点名称
					s = s1.replaceAll("\\s1+", "");
					System.out.println("城市:" + s);

					s1 = rs.GetString((short) 3).toString();// 获得点名称
					s = s1.replaceAll("\\s1+", "");
					System.out.println("所在区:" + s);

					s1 = rs.GetString((short) 4).toString();// 获得点名称
					s = s1.replaceAll("\\s1+", "");
					System.out.println("类别码:" + s);

					s1 = rs.GetString((short) 5).toString();// 获得点名称
					s = s1.replaceAll("\\s1+", "");
					System.out.println("地理编码:" + s);
					System.out.println("-------------------------------");
					// String OBJNAME = rs.GetString("OBJNAME").toString();//
					// 部件的名称
					// String OBJCODE = rs.GetString("OBJCODE").toString();//
					// 部件的编号
					// String DEPTNAME1 =
					// rs.GetString("DEPTNAME1").toString();// 部件的管辖部门
					// String OBJPOS = rs.GetString("OBJPOS").toString();//
					// 部件的??
					// String BGCODE = rs.GetString("BGCODE").toString();//
					// 部件的??
					//
					// System.out.println("OBJNAME=" + OBJNAME);
					// System.out.println("OBJCODE=" + OBJCODE);
					// System.out.println("DEPTNAME1=" + DEPTNAME1);
					// System.out.println("OBJPOS=" + OBJPOS);
					// System.out.println("BGCODE=" + BGCODE);

					// string[] s = new string[7];
					// s[0] = rs.GetString("OBJNAME");
					// s[1] = rs.GetString("OBJCODE");
					// s[2] = rs.GetString("DEPTNAME1");
					// s[3] = rs.GetString("OBJPOS");
					// s[4] = rs.GetString("BGCODE");
					// s[5] = rs.GetGeometry().GetPointAt(0).x.ToString();
					// s[6] = rs.GetGeometry().GetPointAt(0).y.ToString();

					// ShangBaoView.getPoint(point[0].x, point[0].y);
					// x作为int传值会出错,必须转化为string
					// String x = String.valueOf(point[0].x);
					// String y = String.valueOf(point[0].y);

				}
			}

		}

		protected Drawable boundCenterBottom(Drawable balloon) {
			int markerWidth = balloon.getIntrinsicWidth();
			int markerHeight = balloon.getIntrinsicHeight();

			Rect srcRect = balloon.getBounds();
			srcRect.offset(-markerWidth / 2, -markerHeight);
			balloon.setBounds(srcRect);
			return balloon;
		}

		@Override
		public void OnDraw(Canvas canvas) {
			if (!bDraw)
				return;
			Paint paint = new Paint();
			eMyPoint pt = m_myMapWnd.GeoToPixel(new eMyPoint2D(loc_x, loc_y));
			Point myScreenCoords = new Point((int) pt.GetX(), (int) pt.GetY());
			// 转换当前地图位置到屏幕坐标点
			// mv.getProjection().toPixels(gp1, myScreenCoords);
			paint.setStrokeWidth(1);
			paint.setARGB(255, 255, 0, 0);
			paint.setStyle(Paint.Style.FILL);
			@SuppressWarnings("unused")
			Bitmap bm = BitmapFactory.decodeResource(getResources(),
					R.drawable.location);
			canvas.save(Canvas.MATRIX_SAVE_FLAG);
			// 加载两次图片资源
			Drawable drawable = getResources().getDrawable(R.drawable.location);
			// 这里调用mutate 做测试
			Drawable drawable1 = getResources()
					.getDrawable(R.drawable.location).mutate();
			drawable.setBounds(myScreenCoords.x, myScreenCoords.y,
					myScreenCoords.x + drawable.getIntrinsicWidth(),
					myScreenCoords.y + drawable.getIntrinsicHeight());
			drawable1.setBounds(0, 0, drawable1.getIntrinsicWidth(), drawable1
					.getIntrinsicHeight());
			// 位置的调节操作
			boundCenterBottom(drawable);
			drawable.draw(canvas);
			canvas.restore();
			canvas.save(Canvas.MATRIX_SAVE_FLAG);
			// 颜色的过滤
			drawable1.setColorFilter(0x7f000000, PorterDuff.Mode.SRC_IN);
			// 位移操作
			canvas.translate(myScreenCoords.x, myScreenCoords.y);
			// 倾斜操作
			canvas.skew(-0.9F, 0.0F);
			// 进行缩放
			canvas.scale(1.0F, 0.5F);
			boundCenterBottom(drawable1);
			drawable1.draw(canvas);
			// 这里清除颜色过滤
			drawable1.clearColorFilter();
			canvas.restore();
		}

	}

 

分享到:
评论

相关推荐

    qt的点选实现 下拉

    在Qt框架中,实现下拉点选功能通常涉及到QComboBox控件。QComboBox是一个常用的GUI组件,用于提供一个可下拉的选项列表,用户可以通过点击选择其中的一项。本篇文章将详细探讨如何在Qt中利用QComboBox实现点选功能,...

    基于孪生神经网络实现的点选识别

    在本项目中,我们利用了孪生神经网络(Siamese Network)这一强大的机器学习模型来实现点选识别。孪生神经网络因其结构对称而得名,它主要由两个共享权重的神经网络分支构成,常用于比较输入样本对之间的相似性。 ...

    pytorch实现文字点选、选字、选择文字验证码识别_中文字检测识别.zip

    在本项目中,我们主要探讨的是使用PyTorch框架实现文字点选、选字以及选择文字验证码(Captcha)的识别。PyTorch是目前深度学习领域广泛应用的开源库,以其灵活性和易用性深受开发者喜爱。这个项目专注于中文文字的...

    基于PyTorch实现文字点选、选字、选择、点触验证码识别源码+说明.zip

    基于PyTorch实现文字点选、选字、选择、点触验证码识别源码+说明.zip 这是95分以上高分必过课程设计项目,下载即用无需修改,确保可以运行。也可作为期末大作业。 基于PyTorch实现文字点选、选字、选择、点触...

    基于孪生神经网络实现的点选识别源码.zip

    基于孪生神经网络实现的点选识别源码.zip基于孪生神经网络实现的点选识别源码.zip基于孪生神经网络实现的点选识别源码.zip基于孪生神经网络实现的点选识别源码.zip基于孪生神经网络实现的点选识别源码.zip基于孪生...

    易语言点选验证码学习源码

    在这个学习源码中,易语言被用来实现点选验证码的识别功能。首先,我们需要理解易语言的基本语法和结构,如控制结构(如循环、判断)、数据类型(如整型、字符串)以及函数的使用。源码中可能会包含图像处理的相关...

    基于孪生神经网络实现的点选识别python源码(带注释)+运行说明+数据集+预训练模型.zip

    基于孪生神经网络实现的点选识别python源码(带注释)+运行说明+数据集+预训练模型.zip ## 效果 4090训练100轮 测试集可以达到98.6%以上,基本上已经破解了该类验证码。 ![效果演示](./beeb1dc9cdf4f18a98a51d631745ba...

    高德地图实现多边形框选选中地图中坐标点.html

    高德地图实现多边形框选,选中展示地图中坐标点。实现坐标点框选。范围内坐标点选择。包括矩形,圆形,和任意多边形。。。需要修改key为自己注册的开发key

    ArcEngine选择要素 包括点选、框选、圆圈选以及多边形选择

    开发者可以通过实现IHitTest接口,检测鼠标点击是否与地图上的要素重合,从而实现点选功能。点选通常与地图的交互性紧密相关,可以用于获取或修改被选中要素的属性信息。 接下来是框选。框选允许用户通过在地图上...

    arcengine实现点选,圆选,框选,多边形选择要素

    本主题将深入探讨如何利用ArcEngine实现不同类型的要素选择,包括点选、圆选、框选和多边形选择,这些功能对于交互式地图应用至关重要。 1. **点选**:点选允许用户通过点击地图上的一个特定点来选择对应的要素。在...

    点击选择文字验证码识别 pytorch实现文字点选、选字、选择文字验证码识别

    pytorch实现文字点选、选字、选择文字验证码识别 点击选择文字验证码识别 文字点选、选字、选择文字验证码识别 特点 识别速度约在100~300ms之间 96%的准确率 小样本训练(此模型训练采用了300张验证码) windows...

    C#实现chart数据点的放大缩小显示、框选、删除、平移.rar

    本项目“C#实现chart数据点的放大缩小显示、框选、删除、平移.rar”是关于如何通过C#语言扩展Chart控件功能的一个实例,具体涉及以下几个关键知识点: 1. **Chart控件的基本操作**:首先,我们需要了解Chart控件的...

    yy点选识别库.zip

    其中,“yy点选识别库”是一款专为易语言设计的图像识别库,旨在帮助开发者更便捷地实现点选操作的识别功能。本文将深入探讨这一库的功能、原理以及如何在易语言环境中进行调用,以期提供一个全面的理解框架。 一、...

    基于Python 实现孪生神经网络实现的点选识别

    【作品名称】:基于Python 实现孪生神经网络实现的点选识别 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:该项目...

    C#【控件操作篇】实现chart数据点的框选、删除、平移(中级)

    本教程主要关注如何通过C#实现对Chart控件中的数据点进行框选、删除以及平移操作,这些都是在数据可视化应用中非常实用的功能。 首先,我们要理解Chart控件的基本用法。在C#中,Chart控件是System.Windows.Forms....

    c#实现的鼠标框选多个控件

    下面将详细讲解实现这一功能所需的关键知识点。 1. **事件处理**: - 首先,我们需要监听鼠标的`MouseDown`、`MouseMove`和`MouseUp`事件。这些事件是实现框选的基础,`MouseDown`用于记录鼠标按下时的位置,`...

    超图三维 场景框选的实现[代码]

    在“超图三维 场景框选的实现[代码]”这个主题中,我们主要探讨如何在超图三维环境中实现用户交互式的场景框选功能。这种功能通常用于用户在三维视图中快速选择感兴趣的区域或对象,提升操作效率和用户体验。 首先...

    ArcGis Engine 点选

    本篇将详细探讨"ArcGIS Engine点选"这一主题,以及如何在C#环境下实现点选功能。 首先,ArcGIS Engine提供了丰富的API,用于处理地图操作,包括地图的显示、图层管理、空间分析以及用户交互等。在"点选"功能中,...

    为ComboBox控件实现复选框

    为了在ComboBox中实现复选框,我们需要对控件进行自定义扩展或者利用其他技术来模拟这一效果。以下是一些关键知识点: 1. **自定义控件类**:在VC6.0环境下,你可以创建一个新的窗口类(CComboBox派生类),并重写...

    openlayers3点选、框选、多边形选择demo

    本示例"openlayers3点选、框选、多边形选择demo"主要探讨了如何在OpenLayers 3中实现三种不同的选择地图要素的方法:单击点选、矩形框选以及多边形选择。 1. **点选(Point Selection)**: 在OpenLayers 3中,你...

Global site tag (gtag.js) - Google Analytics