首页 / 浏览问题 / WebGIS / 问题详情
iclient ol地图sql查询多个图层怎么将结果放到一个source里
23EXP 2020年12月17日
iclient for openlayers地图服务sql查询多个图层时怎么将结果放到一个source里面?现在source只能加一个features.目前代码如下:

var param = new SuperMap.QueryBySQLParameters({
            queryParams: [{
                name: "SS1",
            },{
                name: "SS2",
            }]
        });
        new ol.supermap.QueryService(url).queryBySQL(param, function (serviceResult) {
           var features1= (new ol.format.GeoJSON()).readFeatures(serviceResult.result.recordsets[0].features);
           var features2= (new ol.format.GeoJSON()).readFeatures(serviceResult.result.recordsets[1].features);
            var vectorSource = new ol.source.Vector({
                features:features1,
                wrapX: false
            });

1个回答

你可以看一下open layer的api  https://openlayers.org/en/v6.4.3/apidoc/module-ol_source_Vector-VectorSource.html,ol.source.Vector的option中features可以传数组,而且也有对应的addFeatures方法

2,842EXP 2020年12月18日
现在这个features1已经是数组了,features2也是数组了,直接addfeatures并没有用
addfeatures您说的没有用,有报错吗?console.log()打印一下你获取的features看是否为undefined
没有报错,没有作用,你可以将我的代码复制过去,我就再示例上修改的
建议用vectorsource的addFeatures方法来添加,添加前console.log()打印你的features,如果是undefined,说明异步请求结果还没有返回,你可以将执行查询请求的方法转成同步执行
...