我遇到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从数据库下载功能时有没有人遇到同样的问题? 谢谢!
答案 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'。
我希望我的解决方案可以帮助那些遇到同样问题的人!