物探论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 581|回复: 0

C#开发GIS应用简明教程[五]

[复制链接]
发表于 2013-3-15 18:08:02 | 显示全部楼层 |阅读模式

第二种实现方法:使用FeatureFactory创建图元
MapXLib.Feature ftr=new MapXLib.FeatureClass();
MapXLib.Point p=new MapXLib.PointClass();
p.Set(axMap1.CenterX,axMap1.CenterY);
ftr=axMap1.Layers._Item("US Top 20 Cities")
.AddFeature(axMap1.FeatureFactory.CreateText
(p,"New Feature",MapXLib.PositionConstants.miPositionCC,
new MapXLib.StyleClass()),
new MapXLib.RowValuesClass());
这段代码和上面和第一种实现方法类似,我们在这里不再设置图元的Type和Style.
FeatureFactory类似于设计模式中的Factory模式,从它可以产生各种类型的图元,这个过程相当于设置了图元的Type.

10)查找图元:
查找图元是很简单的,可以用下边的代码实现:
MapXLib.FindFeature fRes=null;
fRes=axMap1.Layers._Item("US Top 20 Cities").Find.Search("New York","");
axMap1.CenterX=fRes.CenterX;
axMap1.CenterY=fRes.CenterY;

上面这段代码将找到的图元放置在地图中央.这里要注意的是不能使用
MapXLib.FindFeature fRes=new MapXLib.FindFeatureClass();
来创建FindFeature对象,否则将会出错:
"带有 CLSID {436052C3-43E3-11D0-83EB-00AA00BD34FC}的COM对象无效或未注册。"这是MapX 5.0的一个Bug.要避开它,只要在创建对象的时候赋null值就可以了.
下面我们对程序作一些改进,来避免找不到图元的时候出错,并在找到图元以后选择该图元:
MapXLib.FindFeature fRes=null;
fRes=axMap1.Layers._Item("US Top 20 Cities").Find.Search("New York","");
if (fRes.FindRC % 10 ==1)
{
    axMap1.CenterX=fRes.CenterX;
    axMap1.CenterY=fRes.CenterY;
    axMap1.Layers._Item("US Top 20 Cities").Selection.Add(fRes);
}

11)图元的修改:
图元的增加,修改和删除都是非事务性的,也就是说,所作的修改都永久性地对图层表数据产生影响.这可以使用户对多个图元进行操作后一次更新地图,但是在更新之前并不能看到更新后的效果.我们在使用第一种方法创建图元的时候,在最后更新:
ftr.Update(ftr,new MapXLib.RowValuesClass());
但是在FeatureFacory创建图元的时候是不用Update的,因为FeatureFactory的相关方法中已经包含了Update.根据MapX 5.0的开发手册介绍,修改了某个图元并更新时应使用Feature.Update方法,当使用其它图元取代某个图元,应使用Layers.UpdateFeature方法.

12)图元的删除:
和其它编程语言一样,删除图元使用DeleteFeature方法,有关介绍请参看MapX的联机帮助和开发手册.

练习:
1.结合以上例子,并参考相关资料,在地图上建立一个临时图层,并在该图层上加入图标类型(.bmp文件)的图元.
2.自定义一个工具,使用该工具删除图元.

注意: 在对图元操作之前请备份好地图文件,避免不必要的损失.

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|物探论坛 ( 鄂ICP备12002012号 微信号:iwutan )

GMT+8, 2024-5-11 03:38 , Processed in 0.071475 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表