C#实现在手机上编辑电子地图

来源:互联网 发布:软件测试专业培训学校 编辑:程序博客网 时间:2024/04/28 15:36
  1. 一、系统需求:
  2. 开发环境:Windows XP, .NET Compact Framework 2.0, Windows Mobile 5 SDK, HiMap Beta1 runtime
  3. 运行环境:DOPOD D600手机(Windows Mobile 5.0)
  4. 二、程序功能列表:
  5. 1、绘制几何图形----Draw Geometry
  6. 2、编辑几何图形----Edit Geometry
  7. 3、删除几何图形----Delete Geometry
  8. 4、设置几何图形属性----Edit Property
  9. 三、实现方法简介 
  10. 首先,简要介绍实现这些功能的基本方法。具体函数说明请参考《HiMap帮助》。
  11. //1.新建要素
  12. //取得一个图层
  13. IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);
  14. //取得一个元数据
  15. IFeatureClass cls = (IFeatureClass)lyr.Class;
  16. //建立一个要素
  17. IFeature feat = cls.CreateFeature();
  18. //保存要素的修改
  19. feat.Save();
  20. //2.删除一个要素
  21. //取得一个图层
  22. IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);
  23. //取得一个元数据
  24. IFeatureClass cls = (IFeatureClass)lyr.Class;
  25. //建立一个过滤器
  26. IQueryFilter qf=new QueryFilterClass();
  27. //设置条件
  28. qf.WhereClause="id =1";
  29. //查询数据
  30. IFeatureCursor cur = cls.Search(qf);
  31. //取得一个要素
  32. IFeature feat = cur.Next();
  33. //删除一个要素
  34. if (feat != null
  35. {
  36.       cls.DeleteFeature(feat);
  37. }
  38. //3.修改要素的属性值
  39. //取得一个图层
  40. IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);
  41. //取得一个元数据
  42. IFeatureClass cls = (IFeatureClass)lyr.Class;
  43. //建立一个过滤器
  44. IQueryFilter qf=new QueryFilterClass();
  45. //设置条件
  46. qf.WhereClause="id =1";
  47. //查询数据
  48. IFeatureCursor cur = cls.Search(qf);
  49. //取得一个要素
  50. IFeature feat = cur.Next();
  51. if (feat != null
  52. {
  53.         //写入值
  54.         feat.SetValue(cls.Fields.FindField("name"), "测试数据");
  55.       //保存
  56.         feat.Save();
  57. }
  58. //4.修改要素的几何图形
  59. //取得一个图层
  60. IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);
  61. //取得一个元数据
  62. IFeatureClass cls = (IFeatureClass)lyr.Class;
  63. //建立一个过滤器
  64. IQueryFilter qf=new QueryFilterClass();
  65. //设置条件
  66. qf.WhereClause="id =1";
  67. //查询数据
  68. IFeatureCursor cur = cls.Search(qf);
  69. //取得一个要素
  70. IFeature feat = cur.Next();
  71. if (feat != null
  72. {
  73.       //图层为线形Shape,所以使用IPolyline取得图形
  74.       HiMap.Geometry.IPolyline line = (HiMap.Geometry.IPolyline)feat.Shape;
  75.       IPointCollection chline = (IPointCollection)line;
  76.       //建立点(测试数据)
  77.     IPoint pt1 = new PointClass();
  78.      pt1.X = "111.2345556";
  79.      pt1.Y = "23.2345556";
  80.     IPoint pt2 = new PointClass();
  81.      pt2.X = "112.2345556";
  82.      pt2.Y = "23.3345556";
  83.      //添加点到线中
  84.      chline.AddPoint(pt1);
  85.     chline.AddPoint(pt2);
  86.     //将修改后的图形赋给要素
  87.       feat.Shape = (IGeometry)line;
  88.     //保存
  89.     feat.Save(); 
  90. }
  91. //5.为线或面添加新的部分
  92. //取得一个图层
  93. IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);
  94. //取得一个元数据
  95. IFeatureClass cls = (IFeatureClass)lyr.Class;
  96. //建立一个过滤器
  97. IQueryFilter qf=new QueryFilterClass();
  98. //设置条件
  99. qf.WhereClause="id =1";
  100. //查询数据
  101. IFeatureCursor cur = cls.Search(qf);
  102. //取得一个要素
  103. IFeature feat = cur.Next();
  104. if (feat != null
  105. {
  106.        //图层为线形Shape,所以使用IPolyline取得图形
  107.        HiMap.Geometry.IPolyline line = (HiMap.Geometry.IPolyline)feat.Shape;
  108.        //建立一条新的线
  109.        IPointCollection chline = new PolylineClass();
  110.      //建立点(测试数据)
  111.        IPoint pt1 = new PointClass();
  112.        pt1.X = "111.2345556";
  113.      pt1.Y = "23.2345556";
  114.      IPoint pt2 = new PointClass();
  115.       pt2.X = "112.2345556";
  116.        pt2.Y = "23.3345556";
  117.        //添加点到线中
  118.        chline.AddPoint(pt1);
  119.        chline.AddPoint(pt2);       
  120.      HiMap.Geometry.IGeometryCollection geoColl = (HiMap.Geometry.IGeometryCollection)line;
  121.        //将新的线添加到原有的线中
  122.        geoColl.AddGeometry((IGeometry)chline);
  123.        //将修改后的图形赋给要素
  124.        feat.Shape = (IGeometry)line;
  125.      //保存
  126.        feat.Save();
  127. }
原创粉丝点击