本示例代码实现的功能是:点击某点图层后,进行放大闪烁。
实现原理:首先需要明确图层和简单要素类之间的关系,图层仅仅是个容器,图层里面放的是简单要素类,简单要素类里面存放的才是数据。鉴于此,我们准备两个同样的点类型的简单要素类,两者不同仅仅在于符号大小不同。最初图层里面加载的是符号较小的简单要素类。当需要点击查询时,用代码将本图层里面的简单要素类重新绑定为样式符号较大的简单要素类。更改图层里的简单要素类并进行闪烁的示例代码如下:
IBasCls BasCls = null;//类接口,是矢量、栅格、网络、关系等类接口的基接口
mcGDBServer m_GDBSvr = new mcGDBServer();//地理数据库服务器对象
mcGDataBase m_GDB = new mcGDataBase();//地理数据库对象
//连接数据源,打开数据库
int a = 0;
a = m_GDBSvr.Connect("MapGislocal", "", "");
if (a < 0)//打开结果判断
{
MessageBox.Show("connect error");
return;
}
m_GDB = m_GDBSvr.get_gdb("test");//打开名为test的数据库
if (m_GDB == null)//判断打开是否成功
{
MessageBox.Show("open gdb error");
return;
}
//打开待闪烁的简单要素类
m_FCLs = m_GDB.get_XClass(meXClsType.meXSFCls) as mcSFeatureCls;
int b = 0;
b = m_FCLs.Open("参照图层2", 1);//打开对应样式符号较大的简单要素类
if (b <= 0)
{
MessageBox.Show("打开失败!");
}
//以下是进行查询闪烁
mcQueryDef def = new mcQueryDef();
mcRecordSet rcd = new mcRecordSet();//记录集对象,用来存放要显示属性的范围
def.Filter = "name = '闪烁'";
int g = -1;
g = m_FCLs.Select(def, out rcd);//根据查询条件执行查询,将查询结果存放到rcd中
axMapXView1.AppendFlashSet(rcd);//闪烁当前选中记录范围
axMapXView1.StartFlash();