0

我对 OpenLayers + GeoExt2 有疑问:我创建了一个 FeatureStore,其中的功能(通过 API 下载)包含一个id属性。当我尝试在网格面板中表示特征时,所有其他属性都已正确表示(名称、描述等),但 id 以某种方式被 OpenLayers 对象的 id 覆盖,例如“OpenLayers_Feature_Vector_363”,而不是“原始“诠释身份证。

我的商店定义如下:

areaStore = Ext.create('GeoExt.data.FeatureStore', {
    layer: areaLayer,
        fields: [
            {type:'string', name: 'note'},
            {type:'int',    name: 'node' },
            {type:'string', name: 'description'},
            {type:'bool',   name: 'enabled'},
            {type:'int',    name: 'id'}
        ],
    autoLoad: false,
});

我放入网格面板的列定义如下:

var areaColumns = [
    { dataIndex: 'id', header: 'ID', flex:1 },
    { dataIndex: 'description', flex: 1, header: 'Description' },
    { dataIndex: 'node', flex: 1, header: 'Node' },
    { dataIndex: 'enabled', flex: 1, header: 'Enabled'},
    { dataIndex: 'note', flex: 1, header: 'Note' }
]

通过 API 从数据库下载功能时,有人遇到过同样的问题吗?谢谢!

4

2 回答 2

0

您是否尝试过使用

{type:'int',    name: 'recordId',      mapping:'id'}

{ dataIndex: 'recordId', header: 'ID', flex:1 },

检查是否从数据中正确读取了 id?

您是否玩过idProperty商店的配置选项,即将其设置为someNonExistentIdProp

于 2014-08-27T18:52:07.170 回答
0

@Alexander:谢谢您的回答,我现在尝试但没有运气,实际上似乎 id 未定义。这很奇怪,因为所有其他字段都被正确读取,而且我确定该字段的类型是整数。

[编辑] 由于我没有弄清楚为什么 OpenLayers 会覆盖属性的 id 并且它发生在我可以对原始 id 属性进行任何映射之前,我尝试并设法编辑我的 GeoJSON 格式以添加一个 recordId 属性到特征的属性并将其设置为等于原始ID。换句话说,我在下载的 JSON 被解析并添加为 OpenLayers 特征向量之前对其进行了编辑,我添加了 recordId 属性,然后使用这个而不是“id”。

我希望我的解决方案能帮助遇到同样问题的人!

于 2014-09-01T07:33:56.570 回答