`

点选的实现

    博客分类:
  • 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();
		}

	}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics