您的位置:首页 > 编程语言 > C#

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

2008-11-13 22:32 501 查看
一、系统需求:

开发环境:Windows XP, .NET Compact Framework 2.0, Windows Mobile 5 SDK, HiMap Beta1 runtime

运行环境:DOPOD D600手机(Windows Mobile 5.0)

二、程序功能列表:

1、绘制几何图形----Draw Geometry

2、编辑几何图形----Edit Geometry

3、删除几何图形----Delete Geometry

4、设置几何图形属性----Edit Property


三、实现方法简介

首先,简要介绍实现这些功能的基本方法。具体函数说明请参考《HiMap帮助》。

//1.新建要素

//取得一个图层

IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);

//取得一个元数据

IFeatureClass cls = (IFeatureClass)lyr.Class;

//建立一个要素

IFeature feat = cls.CreateFeature();

//保存要素的修改

feat.Save();

//2.删除一个要素

//取得一个图层

IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);

//取得一个元数据

IFeatureClass cls = (IFeatureClass)lyr.Class;

//建立一个过滤器

IQueryFilter qf=new QueryFilterClass();

//设置条件

qf.WhereClause="id =1";

//查询数据

IFeatureCursor cur = cls.Search(qf);

//取得一个要素

IFeature feat = cur.Next();

//删除一个要素

if (feat != null)

{

cls.DeleteFeature(feat);

}

//3.修改要素的属性值

//取得一个图层

IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);

//取得一个元数据

IFeatureClass cls = (IFeatureClass)lyr.Class;

//建立一个过滤器

IQueryFilter qf=new QueryFilterClass();

//设置条件

qf.WhereClause="id =1";

//查询数据

IFeatureCursor cur = cls.Search(qf);

//取得一个要素

IFeature feat = cur.Next();

if (feat != null)

{

//写入值

feat.SetValue(cls.Fields.FindField("name"), "测试数据");

//保存

feat.Save();

}

//4.修改要素的几何图形

//取得一个图层

IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);

//取得一个元数据

IFeatureClass cls = (IFeatureClass)lyr.Class;

//建立一个过滤器

IQueryFilter qf=new QueryFilterClass();

//设置条件

qf.WhereClause="id =1";

//查询数据

IFeatureCursor cur = cls.Search(qf);

//取得一个要素

IFeature feat = cur.Next();

if (feat != null)

{

//图层为线形Shape,所以使用IPolyline取得图形

HiMap.Geometry.IPolyline line = (HiMap.Geometry.IPolyline)feat.Shape;

IPointCollection chline = (IPointCollection)line;

//建立点(测试数据)

IPoint pt1 = new PointClass();

pt1.X = "111.2345556";

pt1.Y = "23.2345556";

IPoint pt2 = new PointClass();

pt2.X = "112.2345556";

pt2.Y = "23.3345556";

//添加点到线中

chline.AddPoint(pt1);

chline.AddPoint(pt2);

//将修改后的图形赋给要素

feat.Shape = (IGeometry)line;

//保存

feat.Save();

}

//5.为线或面添加新的部分

//取得一个图层

IFeatureLayer lyr = (IFeatureLayer)mapControl1.Map.GetLayer(0);

//取得一个元数据

IFeatureClass cls = (IFeatureClass)lyr.Class;

//建立一个过滤器

IQueryFilter qf=new QueryFilterClass();

//设置条件

qf.WhereClause="id =1";

//查询数据

IFeatureCursor cur = cls.Search(qf);

//取得一个要素

IFeature feat = cur.Next();

if (feat != null)

{

//图层为线形Shape,所以使用IPolyline取得图形

HiMap.Geometry.IPolyline line = (HiMap.Geometry.IPolyline)feat.Shape;

//建立一条新的线

IPointCollection chline = new PolylineClass();

//建立点(测试数据)

IPoint pt1 = new PointClass();

pt1.X = "111.2345556";

pt1.Y = "23.2345556";

IPoint pt2 = new PointClass();

pt2.X = "112.2345556";

pt2.Y = "23.3345556";

//添加点到线中

chline.AddPoint(pt1);

chline.AddPoint(pt2);

HiMap.Geometry.IGeometryCollection geoColl = (HiMap.Geometry.IGeometryCollection)line;

//将新的线添加到原有的线中

geoColl.AddGeometry((IGeometry)chline);

//将修改后的图形赋给要素

feat.Shape = (IGeometry)line;

//保存

feat.Save();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐