OpenLayers覆盖要素id



我在OpenLayers+GeoExt2上遇到问题:我创建了一个FeatureStore,其中的功能(通过API下载)包含id属性。当我尝试在网格面板中表示功能时,所有其他属性都得到了正确的表示(名称、描述等),但该id以某种方式被OpenLayers对象的id覆盖,例如"OpenLayers_Feature_Vector363",而不是"原始"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从数据库下载功能时遇到同样的问题?非常感谢。

您尝试过使用吗

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

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新