OpenLayers会覆盖功能ID

时间:2014-08-27 09:48:28

标签: extjs openlayers geoext

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

我的商店定义如下:

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从数据库下载功能时有没有人遇到同样的问题? 谢谢!

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用

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

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

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

您是否使用了商店的idProperty配置选项,即将其设置为someNonExistentIdProp

答案 1 :(得分:0)

@Alexander:谢谢你的回答,我现在试着没有运气,看起来似乎id未定义。这很奇怪,因为所有其他字段都被正确读取,我确定该字段的类型是整数。

[编辑]因为我没有找到为什么OpenLayers会覆盖属性' id和它发生在我可以映射到原始id属性之前,我尝试并设法编辑我的GeoJSON格式,以便为功能添加recordId属性。属性并将其设置为等于原始ID。 换句话说,我在解析之前编辑了下载的JSON并将其添加为OpenLayers特征向量,我添加了recordId属性,然后使用了这个而不是' id'。

我希望我的解决方案可以帮助那些遇到同样问题的人!