【问题标题】:OpenLayers overrides features idOpenLayers 覆盖功能 ID
【发布时间】:2014-08-27 09:48:28
【问题描述】:

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

【问题讨论】:

    标签: extjs openlayers geoext


    【解决方案1】:

    您是否尝试过使用

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多