Skip to content

Commit 0281ec0

Browse files
【fix】 getFeature接口对接hasGeometry参数 review by songym
1 parent a90534a commit 0281ec0

10 files changed

+56
-15
lines changed

src/common/iServer/GetFeaturesByBoundsParameters.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ export class GetFeaturesByBoundsParameters extends GetFeaturesParametersBase {
119119
if (params.maxFeatures && !isNaN(params.maxFeatures)) {
120120
parasByBounds.maxFeatures = params.maxFeatures;
121121
}
122+
123+
if (typeof params.hasGeometry === 'boolean') {
124+
parasByBounds.hasGeometry = params.hasGeometry;
125+
}
126+
122127
if (params.targetEpsgCode) {
123128
parasByBounds.targetEpsgCode = params.targetEpsgCode;
124129
}

src/common/iServer/GetFeaturesByBufferParameters.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ export class GetFeaturesByBufferParameters extends GetFeaturesParametersBase {
8585
* @returns {string} 转化后的 JSON 字符串。
8686
*/
8787
static toJsonParameters(params) {
88-
var filterParameter, paramsBySql, geometry;
88+
var filterParameter, paramsByBuffer, geometry;
8989
geometry = ServerGeometry.fromGeometry(params.geometry);
90-
paramsBySql = {
90+
paramsByBuffer = {
9191
datasetNames: params.datasetNames,
9292
getFeatureMode: 'BUFFER',
9393
bufferDistance: params.bufferDistance,
@@ -97,22 +97,27 @@ export class GetFeaturesByBufferParameters extends GetFeaturesParametersBase {
9797
filterParameter = new FilterParameter();
9898
filterParameter.name = params.datasetNames;
9999
filterParameter.fields = params.fields;
100-
paramsBySql.queryParameter = filterParameter;
100+
paramsByBuffer.queryParameter = filterParameter;
101101
}
102102
if (params.attributeFilter) {
103-
paramsBySql.attributeFilter = params.attributeFilter;
104-
paramsBySql.getFeatureMode = 'BUFFER_ATTRIBUTEFILTER';
103+
paramsByBuffer.attributeFilter = params.attributeFilter;
104+
paramsByBuffer.getFeatureMode = 'BUFFER_ATTRIBUTEFILTER';
105105
}
106106
if (params.maxFeatures && !isNaN(params.maxFeatures)) {
107-
paramsBySql.maxFeatures = params.maxFeatures;
107+
paramsByBuffer.maxFeatures = params.maxFeatures;
108108
}
109+
110+
if (typeof params.hasGeometry === 'boolean') {
111+
paramsByBuffer.hasGeometry = params.hasGeometry;
112+
}
113+
109114
if (params.targetEpsgCode) {
110-
paramsBySql.targetEpsgCode = params.targetEpsgCode;
115+
paramsByBuffer.targetEpsgCode = params.targetEpsgCode;
111116
}
112117
if (!params.targetEpsgCode && params.targetPrj) {
113-
paramsBySql.targetPrj = params.targetPrj;
118+
paramsByBuffer.targetPrj = params.targetPrj;
114119
}
115-
return Util.toJSON(paramsBySql);
120+
return Util.toJSON(paramsByBuffer);
116121
}
117122
}
118123

src/common/iServer/GetFeaturesByGeometryParameters.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,15 @@ export class GetFeaturesByGeometryParameters extends GetFeaturesParametersBase {
114114
parasByGeometry.attributeFilter = params.attributeFilter;
115115
parasByGeometry.getFeatureMode = 'SPATIAL_ATTRIBUTEFILTER';
116116
}
117+
117118
if (params.maxFeatures && !isNaN(params.maxFeatures)) {
118119
parasByGeometry.maxFeatures = params.maxFeatures;
119120
}
121+
122+
if (typeof params.hasGeometry === 'boolean') {
123+
parasByGeometry.hasGeometry = params.hasGeometry;
124+
}
125+
120126
if (params.targetEpsgCode) {
121127
parasByGeometry.targetEpsgCode = params.targetEpsgCode;
122128
}

src/common/iServer/GetFeaturesByIDsParameters.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,16 @@ export class GetFeaturesByIDsParameters extends GetFeaturesParametersBase {
8787
if (params.targetEpsgCode) {
8888
parasByIDs.targetEpsgCode = params.targetEpsgCode;
8989
}
90+
91+
if (typeof params.hasGeometry === 'boolean') {
92+
parasByIDs.hasGeometry = params.hasGeometry;
93+
}
94+
9095
if (!params.targetEpsgCode && params.targetPrj) {
9196
parasByIDs.targetPrj = params.targetPrj;
9297
}
9398
if (params.aggregations) {
94-
parasByIDs.aggregations = params.aggregations;
99+
parasByIDs.aggregations = params.aggregations;
95100
}
96101

97102
return Util.toJSON(parasByIDs);

src/common/iServer/GetFeaturesParametersBase.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ export class GetFeaturesParametersBase {
6969
*/
7070
this.maxFeatures = null;
7171

72+
/**
73+
* @member {number} [SuperMap.GetFeaturesParametersBase.prototype.hasGeometry=true]
74+
* @description 返回结果是否包含Geometry
75+
*/
76+
this.hasGeometry = true;
77+
7278
/**
7379
* @member {SuperMap.MetricsAggParameter|SuperMap.GeoHashGridAggParameter} SuperMap.GetFeaturesParametersBase.prototype.aggregations
7480
* @description 聚合查询参数,该参数仅支持数据来源 Elasticsearch 服务的Supermap iServer的rest数据服务。
@@ -91,6 +97,7 @@ export class GetFeaturesParametersBase {
9197
me.returnContent = null;
9298
me.fromIndex = null;
9399
me.toIndex = null;
100+
me.hasGeometry = null;
94101
me.maxFeatures = null;
95102
me.targetEpsgCode = null;
96103
me.targetPrj = null;

src/common/iServer/GetFeaturesServiceBase.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ export class GetFeaturesServiceBase extends CommonServiceBase {
8686
me.toIndex = null;
8787
me.maxFeatures = null;
8888
me.format = null;
89+
me.hasGeometry = null;
8990
}
9091

9192
/**

test/common/iServer/GetFeaturesByBoundsServiceSpec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,15 @@ describe('GetFeaturesByBoundsService', () => {
9999
);
100100
var boundsParams = new GetFeaturesByBoundsParameters({
101101
datasetNames: ['World:Countries'],
102-
bounds: new Bounds(0, 0, 90, 90)
102+
bounds: new Bounds(0, 0, 90, 90),
103+
hasGeometry: false
103104
});
104105
spyOn(FetchRequest, 'commit').and.callFake((method, testUrl, params, options) => {
105106
expect(method).toBe('POST');
106107
expect(testUrl).toBe(url + '/featureResults?returnContent=true&fromIndex=0&toIndex=19');
107108
var paramsObj = JSON.parse(params.replace(/'/g, '"'));
108109
expect(paramsObj.datasetNames[0]).toBe('World:Countries');
110+
expect(paramsObj.hasGeometry).toBe(false);
109111
expect(options).not.toBeNull();
110112
return Promise.resolve(new Response(JSON.stringify(getFeaturesResultJson)));
111113
});

test/common/iServer/GetFeaturesByBufferServiceSpec.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ describe('GetFeaturesByBufferService', () => {
4747
bufferDistance: 30,
4848
attributeFilter: 'SMID>0',
4949
geometry: geometry,
50-
returnContent: false
50+
returnContent: false,
51+
hasGeometry: false
5152
});
5253
var getFeaturesByBufferFailed = serviceFailedEventArgs => {
5354
serviceFailedEventArgsSystem = serviceFailedEventArgs;
@@ -66,6 +67,7 @@ describe('GetFeaturesByBufferService', () => {
6667
expect(getFeaturesByBufferService.returnContent).toBeNull();
6768
expect(getFeaturesByBufferService.fromIndex).toBeNull();
6869
expect(getFeaturesByBufferService.toIndex).toBeNull();
70+
expect(getFeaturesByBufferService.hasGeometry).toBeNull();
6971
getFeaturesByBufferParameters.destroy();
7072
done();
7173
} catch (exception) {
@@ -107,7 +109,8 @@ describe('GetFeaturesByBufferService', () => {
107109
geometry: geometry,
108110
fromIndex: 0,
109111
toIndex: 19,
110-
returnContent: true
112+
returnContent: true,
113+
hasGeometry: true
111114
});
112115
var getFeaturesByBufferFailed = serviceFailedEventArgs => {
113116
serviceFailedEventArgsSystem = serviceFailedEventArgs;
@@ -130,6 +133,7 @@ describe('GetFeaturesByBufferService', () => {
130133
expect(getFeaturesByBufferService.returnContent).toBeNull();
131134
expect(getFeaturesByBufferService.fromIndex).toBeNull();
132135
expect(getFeaturesByBufferService.toIndex).toBeNull();
136+
expect(getFeaturesByBufferService.hasGeometry).toBeNull();
133137
getFeaturesByBufferParameters.destroy();
134138
done();
135139
} catch (exception) {
@@ -151,6 +155,7 @@ describe('GetFeaturesByBufferService', () => {
151155
var paramsObj = JSON.parse(params.replace(/'/g, '"'));
152156
expect(paramsObj.datasetNames[0]).toBe('World:Capitals');
153157
expect(paramsObj.attributeFilter).toBe('SMID%26gt;0');
158+
expect(paramsObj.hasGeometry).toBe(true)
154159
expect(options).not.toBeNull();
155160
return Promise.resolve(new Response(JSON.stringify(getFeaturesResultJson)));
156161
});

test/common/iServer/GetFeaturesByGeometryServiceSpec.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ describe('GetFeaturesByGeometryService', () => {
5050
fromIndex: 0,
5151
toIndex: -1,
5252
spatialQueryMode: SpatialQueryMode.INTERSECT,
53-
geometry: point
53+
geometry: point,
54+
hasGeometry: false
5455
});
5556
var getFeaturesByGeometryFailed = serviceFailedEventArgs => {
5657
serviceFailedEventArgsSystem = serviceFailedEventArgs;
@@ -68,6 +69,7 @@ describe('GetFeaturesByGeometryService', () => {
6869
expect(getFeaturesByGeometryService.events).toBeNull();
6970
expect(getFeaturesByGeometryService.eventListeners).toBeNull();
7071
expect(getFeaturesByGeometryService.returnContent).toBeNull();
72+
expect(getFeaturesByGeometryService.hasGeometry).toBeNull();
7173
getFeaturesByGeometryParameters.destroy();
7274
done();
7375
} catch (exception) {
@@ -88,6 +90,7 @@ describe('GetFeaturesByGeometryService', () => {
8890
var paramsObj = JSON.parse(params.replace(/'/g, '"'));
8991
expect(paramsObj.datasetNames[0]).toBe('World:Countries');
9092
expect(paramsObj.spatialQueryMode).toBe('INTERSECT');
93+
expect(paramsObj.hasGeometry).toBe(false);
9194
expect(options).not.toBeNull();
9295
return Promise.resolve(
9396
new Response(

test/common/iServer/GetFeaturesByIDsServiceSpec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ describe('GetFeaturesByIDsService', () => {
7575
fromIndex: 0,
7676
fields: ['SMID'],
7777
toIndex: -1,
78-
IDs: [1, 2, 3]
78+
IDs: [1, 2, 3],
79+
hasGeometry: false
7980
});
8081
spyOn(FetchRequest, 'commit').and.callFake((method, testUrl, params, options) => {
8182
expect(method).toBe('POST');
@@ -85,6 +86,7 @@ describe('GetFeaturesByIDsService', () => {
8586
var paramsObj = JSON.parse(params.replace(/'/g, '"'));
8687
expect(paramsObj.datasetNames[0]).toBe('World:Capitals');
8788
expect(paramsObj.getFeatureMode).toBe('ID');
89+
expect(paramsObj.hasGeometry).toBe(false);
8890
expect(options).not.toBeNull();
8991
return Promise.resolve(
9092
new Response(

0 commit comments

Comments
 (0)