SuperMap/iClient-JavaScript

iclient-common中GetFeaturesByGeometryParameters的问题

lucahan opened this issue · 1 comments

const geometryParam = new GetFeaturesByGeometryParameters({
        datasetNames: ["sdx:LD_CSZTGHYD"],
        geometry: geojsonGeom.getGeometry(),
        spatialQueryMode: "INTERSECT",
        targetPrj:{"epsgCode":4490},
        prjCoordSys:{"epsgCode":4490}
});
new FeatureService(‘’).getFeaturesByGeometry(geometryParam, function (serviceResult) {
         console.log(serviceResult)
});

WqAsMQ.jpg
在调用FeatureService中的getFeaturesByGeometry方法时,请求中会自动带入prjCoordSys这个值,但是GetFeaturesByGeometryParameters初始化时又无法设定,文档里确实没有这个参数,这就导致了,我在进行查询服务时,如果输入坐标与服务坐标系不一致,但是这个prjCoordSys这个值设置又是null就会查不到结果,我在postman里请求把prjCoordSys设置正确后,就可以查询成功了,希望可以解决这个问题

您好,谢谢您报的issue。
您的意思是当传入的geometry和iserver的数据服务的坐标系不一致时,希望传递prjCoordSys参数来处理这个问题?

根据 iSevrer数据服务featureresult资源当前的api,这个资源并不支持prjCoordSys参数。传过去也是没有效果的。

iSevrer目前支持将prjCoordSys作为geometry的参数传入,但是由于现在传入的geometry其实是leaflet的对象,内部转换方法暂时不支持传入prjCoordSys。这部分我们思考下怎么修改,更易用。

目前可以尝试在前端使用proj4js等库进行坐标转换,再调用服务接口。