首页 / 浏览问题 / WebGIS / 问题详情
layer属性中的_selection值代表什么
55EXP 2024年07月29日

先前已问过一个问题“图元id和SMID有什么联系吗”,已有解答,但是又遇到其他问题,原帖已经过了一段时间,所以另外写一个帖子来问。

SMID是指用多数据集生成S3M缓存并合并图层,用SMID属性作为对象ID字段。然后获取数据集featrue属性,获取其中的SMID值,发现每个数据集的SMID单独计算,比如每个数据集都有一个SMID为1的图元。而SPI中的大部分方法定位图元用的是图元id,这个是不区分数据集的,比如第二个数据集SMID为1的图元,图元ID就是第一个数据集最后一个SMID接着往下数。

这个问题的帖子https://qa.supermap.com/147571

问题是:我在layer图层属性中找到一个_selection属性值,发现和点击图元的图元id是相等的,然后我测试了我现有的模型,也没有例外。但是没有把握之后的模型都可以认为_selection属性值就等于点击图元的图元id,想请问这个属性值是否代表点击图元的图元id。

1个回答

您好,_selection 属性通常不是用来表示点击图元的图元 ID 的。通常情况下,要获取点击图元的图元 ID,你应该直接查询实体对象的 smid 属性

希望可以帮到您
1,470EXP 2024年07月29日

可是我获取feature中的smid并不等同于图元ID,就是我无法使用获取到的smid来作为setcolor这类方法的参数。原因就是我再上面提到的,我是用数据集生成缓存,smId作为对象id,得到的数据服务中feature.smId是对数据集唯一,用这个id设置颜色得到的效果完全不对。

我需要实现的功能是,点击一个图元,除了这个图元之外的图元全部透明。我目前的实现方式先设置全部图元透明,然后用removeColor把选中图元的透明度去除。但这是在能够获取点击图元的图元id基础上的,如果只能获取到smId,那removeColor就无法准确的把选中图元的透明度除去。

那有没有用smId可以精确操作到图元的方法呢?

我看了下API,有这么个方法:

getSelection() → AssociativeArray

获取选择集。

Returns:

包含所有选中ID的关系数组。

Example:

S3MTilesLayer.getSelection();

 然后我试了下

window.layer.getSelection()

window.layer是模型初始化的时候我把layer存到了window全局变量,得到的也和图元id的值一样,那这个是不是图元id呢?

getSelection()获取到的值和SMID是一致的,您使用setObjsColor(ids, color)中的ids值也是使用的SMID

...