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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy