首页 / 浏览问题 / WebGIS / 问题详情
属性修改的时候出错
9EXP 2020年08月04日

使用地物编辑修改属性的时候出现Uncaught TypeError: e.getProperties is not a function的错误,图中有截图我的参数,请教一下为什么会出现这个问题,是我构造的参数问题还是什么问题?for openlayers的版本是10.0.1

1个回答

您好,您设置feature的属性方法有误,您这个是直接给feature添加了properties属性方式,底层函数是无法直接获取的。底层函数能获取属性的结构体是如果您要给feature设置属性可以通过pointFeature.setProperties({POP: 1, CAPITAL: 'test'});这种方式

3,352EXP 2020年08月04日

还是不太行鸭sad有修改的示例吗,我的新增和删除都没有问题,就是修改有这个问题

这个明显有问啊,键值队不对呀,SMID明显是number,您那边传入个string是不对的,然后再确认下,是不是用我的pointFeature.setProperties({POP: 1, CAPITAL: 'test'});这个传的属性
接口不变将update修改为add是可以的,修改为update就提报错提示the number of 'fieldNames' and 'fieldValues' are not equal
我确定就是这个问题,注意你的字段类型。而且更新的时候,只需要传你需要的属性,而不是全部都传入,系统字段不要动!

不行呀,还是“the number of 'fieldNames' and 'fieldValues' are not equal”这个问题,还有一个问题哈,就是只传我自己的属性的话那系统怎么知道应该修改哪一条数据?如果需要传smid的话在什么时候传递?crying

重要的是ID,你可以把IDs写上
for(let j=1;j<1000;j++){
    data.push({
        "ID": j,
            "fieldNames": [
                "SMID",
                "NAME"
            ],
            "fieldValues": [
                `${j}`,
                "nihao"
            ],
    })
}
$.ajax({
    type:'post',
    contentType: 'text/plain;charset=UTF-8',
    url:'http://localhost:8090/iserver/services/data-Changchun/rest/data/datasources/Changchun/datasets/School/features.rjson?_method=PUT',
    data:JSON.stringify(data),
    success:(e)=>{
        $.ajax({
            type:'post',
            contentType: 'text/plain;charset=UTF-8',
            url:'http://localhost:8090/iserver/services/data-Changchun/rest/data/featureResults.json?returnContent=true&toIndex=-1',
            data:JSON.stringify({'datasetNames':["Changchun:School"],'getFeatureMode':"SQL",'queryParameter':{'name':"School@Changchun"}}),
            success:(e)=>{
                console.log(e,'查询')
            }
        })
     },
    error:(e)=>{  console.log(e,'err')
    },
})

我的测试结果是ok的

var pointFeature = new ol.Feature(geoms);
pointFeature.setProperties(_this.attributesData);
pointFeature.setId(_this.updateObj["id"]);

好吧,终于找到问题所在了,需要对pointFeature设置自定义属性参数的同时setId,害难受,非常感谢您的耐心解答

...