首页 / 浏览问题 / 三维GIS / 问题详情
webgl查询根据数据服务的字段名称获取对应值
216EXP 2019年06月14日

问题1:webgl空间查询(参考http://support.supermap.com.cn:8090/webgl/examples/editor.html#getFeatureByGeometry),示例中是根据字段的顺序去取对应的字段值的,对于超图系统默认字而言,这种方法存在弊端,因为对于udb类型的数据源和udbx类型的数据源,其系统默认字段是不一样的;对于用户自定义的字段而言,这种方法也不可行,因为用户自定的字段数量可能会变,最好的方法是根据数据服务的字段名称获取对应的字段值(组件开发可以这样写),但是webgl这种方法似乎不行,有没有相应的解决方法呢???

示例代码是用selectedFeatures[i].fieldValues[数字]的方式获取到数据服务的对应的字段值的(如selectedFeatures[i].fieldValues["0"])。

对于非系统字段,用selectedFeatures[i].fieldValues[数字]这种方式获取到数据服务的对应的字段值不可取,因为不同的数据字段类型不一样?

如果我用一个循环提前遍历出每个字段的下标的话,如下图的PLPTNO字段下标是3,这样获取PLPTNO的字段对应的下标需要额外的一次循环,对于多种数据类型(自定义字段的名称和数据都不一致情况),且数据量大的情况下效率会很低,请问这种问题怎么解决???

如上面两张图的6276条数据,里面分为点和线两种数据服务,但是点数据服务和线数据服务的自定义字段名称不一致,现在想要分别取到点数据服务的PLPTNO、MNTPCD、ADDVCD字段值;线数据服务的PLID、MNTPCD、ADDVCD字段值,怎么取???

1个回答

示例中是通过遍历把所有字段筛选出来了。您写的时候只需要把自己需要的字段写出来就可以了.

console.log(selectedFeatures);您可以查看里面的结构,然后来获取你想要的字段的对应编号
6,215EXP 2019年06月14日
是可以通过console.log(selectedFeatures)查看里面的结构,然后来获取想要的字段的对应编号。但是这样不够灵活,不同的数据,我想要的某个字段的顺序是不一样的,这样的话代码针对一种数据就需要重新配置某个字段对应的下标数字。

通过selectedFeatures[i].fieldValues[数字]这种方式获取字段值,第一步需要先获取这个字段值对应的数字,可以通过for循环根绝字段名称获取到这个数字,但是在数据量大的情况下,这种方式效率很低。

我想问的是有没有可能直接通过字段名获取到对应的字段值??如selectedFeatures[i].fieldValues[字段名称]这钟方式???
不可以的,您可以console.log(selectedFeatures[i].fieldNames[i]);遍历一下 ,如果相等,则输出。反之则不输出
...