高亮显示在属性表中选中的要素

高亮显示在属性表中选中的要素  

/// <summary>
/// 高亮显示在属性表中选中的要素
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
    frmMap.m_mapCtrl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
    IQueryFilter pQuery = new QueryFilterClass();
    int count = this.dataGridView1.SelectedRows.Count;
    string val;
    string col;
    col = this.dataGridView1.Columns[0].Name;
    //当只选中一行时
    if(count==1)
    {
        val = this.dataGridView1.SelectedRows[0].Cells[col].Value.ToString();
        //设置高亮要素的查询条件
        pQuery.WhereClause = col + "=" + val;
    }
    else//当选中多行时
    {
        int i;
        string str;
        for (i = 0; i < count-1; i++)
        {
            val = this.dataGridView1.SelectedRows[i].Cells[col].Value.ToString();
            str = col + "=" + val + " OR ";
            pQuery.WhereClause += str;
        }
        //添加最后一个要素的条件
        val = this.dataGridView1.SelectedRows[i].Cells[col].Value.ToString();
        str = col + "=" + val;
        pQuery.WhereClause += str;
    }
    IFeatureLayer pFeatureLayer = layer as IFeatureLayer;
    IFeatureSelection pFeatSelection;
    pFeatSelection = pFeatureLayer as IFeatureSelection;
    pFeatSelection.SelectFeatures(pQuery, esriSelectionResultEnum.esriSelectionResultNew,false);
    frmMap.m_mapCtrl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);                                  
}

转载于:https://www.cnblogs.com/xinghai/archive/2012/06/21/2557981.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Cesium高亮显示选中的3D Tiles模型部位,并显示属性和坐标信息,可以使用以下步骤: 1. 创建一个Cesium Viewer对象,并加载3D Tiles数据。例如: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); var tileset = new Cesium.Cesium3DTileset({ url: 'path/to/3dtiles.json' }); viewer.scene.primitives.add(tileset); ``` 2. 注册鼠标事件,监听鼠标左键的点击事件。例如: ```javascript var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler.setInputAction(function(event) { var pickedObject = viewer.scene.pick(event.position); if (Cesium.defined(pickedObject) && pickedObject.tileset === tileset) { // 3D Tiles模型被选中 var feature = pickedObject.getProperty('属性名称'); var position = pickedObject.primitive.boundingSphere.center; console.log('选中属性:', feature); console.log('模型坐标:', position); // 高亮显示选中的3D Tiles模型部位 var highlight = tileset.style.highlightColor; tileset.style = new Cesium.Cesium3DTileStyle({ color: { conditions: [ ['${选中属性} === ' + feature, highlight], [true, 'color("white")'] ] } }); } }, Cesium.ScreenSpaceEventType.LEFT_CLICK); ``` 3. 在3D Tiles模型被选中时,获取属性和坐标信息,并高亮显示选中的部位。例如上述代码,获取属性信息的方法是通过getProperty方法获取的,高亮显示的方法是通过修改tileset的style属性实现的。需要注意的是,style属性是一个Cesium3DTileStyle对象,可以通过其color属性设置模型的颜色。在条件达式,使用`${选中属性}`选中的3D Tiles模型的属性值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值