首页 / 浏览问题 / WebGIS / 问题详情
for openLayers+FeatureService
qwj
2EXP 2023年03月07日

 代码如下:var geometryParam = new SuperMap.REST.GetFeaturesByGeometryParameters({

          datasetNames: ['gisln:dltb'],

          geometry: polygon,

          spatialQueryMode: 'INTERSECT',

          fromIndex: 0,

          toIndex: 19,

        })

        var self = this

        new FeatureService(

          url,

        ).getFeaturesByGeometry(geometryParam, function (serviceResult) {

          console.log(serviceResult.result.features)

          var vectorSource = new VectorSource({

            features: new GeoJSON().readFeatures(serviceResult.result.features),

            wrapX: false,

          })

          var resultLayer = new VectorLayer({

            source: vectorSource,

          })

          self.map.addLayer(resultLayer)

        })

返回的查询结果serviceResult.result.features有20条,如下图,但是为什么只高亮了一条数据呢?

1个回答

您好!features: (new ol.format.GeoJSON()).readFeatures(serviceResult.result.features)这样获取查询结果试试呢。

希望可以帮助到您!
1,402EXP 2023年03月07日

引用就是new ol.format.GeoJSON(),而且现在的返回结果是对的,但是最后显示的结果不对

打印看下vectorSource.getFeatures()里面的要素信息是不是完整的

根据你的截图,查询到的可能都是一个feature,您那边再检查一下查询的条件与数据集

最后的返回结果20条数据是不同的数据,但是代码:

 var vectorSource = new VectorSource({

            features: new GeoJSON().readFeatures(serviceResult.result.features),//这里返回20个feature

            wrapX: false,

          }),这里vectorSource里只进去了第一个feature,这是为什么呢

features: (new GeoJSON()).readFeatures(serviceResult.result.features)这样先实例化后,再调用readFeatures方法试试呢
现在找到问题了,为什么返回来的feature的id都是一样的都是-1呢?
检查数据源中数据是否都是-1,用其他工具例如postman对数据服务进行请求,看看返回的结果是否为-1
...