Skip to content

Commit 3db5aa0

Browse files
committed
[fix]ICL-1367 ol距离测量 Planar失效 review by songym
1 parent b338012 commit 3db5aa0

File tree

2 files changed

+100
-2
lines changed

2 files changed

+100
-2
lines changed

src/common/iServer/MeasureService.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,11 @@ export class MeasureService extends CommonServiceBase {
9191
paramsTemp = {
9292
"point2Ds": Util.toJSON(point2ds),
9393
"unit": params.unit,
94-
"prjCoordSys": prjCoordSysTemp
94+
"prjCoordSys": prjCoordSysTemp,
95+
"distanceMode": params.distanceMode || 'Geodesic'
9596
};
9697
} else {
97-
paramsTemp = {"point2Ds": Util.toJSON(point2ds), "unit": params.unit};
98+
paramsTemp = {"point2Ds": Util.toJSON(point2ds), "unit": params.unit, "distanceMode": params.distanceMode || 'Geodesic'};
9899
}
99100

100101
me.request({

test/common/iServer/MeasureServiceSpec.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,5 +347,102 @@ describe('MeasureService', () => {
347347
measureService.events.on({'processCompleted': measureCompleted, 'processFailed': measureFailed});
348348
measureService.processAsync(measureParameters);
349349
});
350+
351+
// MeasureParameters-distanceMode
352+
it('processAsync_distanceMode-geodesic', (done) => {
353+
var mapServiceURL = GlobeParameter.mapServiceURL;
354+
var worldMapURL = mapServiceURL + "World Map";
355+
var measureCompleted = (measureEventArgs) => {
356+
measureEventArgsSystem = measureEventArgs;
357+
try {
358+
var measureResult = measureEventArgsSystem.result;
359+
expect(measureResult).not.toBeNull();
360+
expect(measureResult.succeed).toBeTruthy();
361+
expect(measureResult.area).toEqual(-1);
362+
expect(measureResult.distance).toEqual(3.0616868362);
363+
expect(measureResult.unit).toBe("METER");
364+
measureService.destroy();
365+
expect(measureService.url == null).toBeTruthy();
366+
expect(measureService.isInTheSameDomain == null).toBeTruthy();
367+
expect(measureService.EVENT_TYPES == null).toBeTruthy();
368+
expect(measureService.events == null).toBeTruthy();
369+
expect(measureService.distanceMode == null).toBeTruthy();
370+
measureParameters.destroy();
371+
done();
372+
} catch (exception) {
373+
expect(false).toBeTruthy();
374+
console.log("MeasureService_" + exception.name + ":" + exception.message);
375+
measureService.destroy();
376+
measureParameters.destroy();
377+
done();
378+
}
379+
};
380+
var measureFailed = (serviceFailedEventArgs) => {
381+
serviceFailedEventArgsSystem = serviceFailedEventArgs;
382+
};
383+
var measureService = initMeasureService(worldMapURL,measureFailed,measureCompleted);
384+
var points = [new Point(0, 0), new Point(10, 10)];
385+
var geometry = new LinearRing(points);
386+
var measureParameters = new MeasureParameters(geometry,{ distanceMode: 'Geodesic' });
387+
expect(measureService).not.toBeNull();
388+
expect(measureService.url).toEqual(worldMapURL);
389+
spyOn(FetchRequest, 'commit').and.callFake((method,testUrl,params) => {
390+
expect(method).toBe("GET");
391+
expect(testUrl).toBe(worldMapURL+"/distance");
392+
expect(params).not.toBeNull();
393+
expect(params.distanceMode).toEqual('Geodesic');
394+
return Promise.resolve(new Response(`{"area":-1,"unit":"METER","distance": 3.0616868362}`));
395+
});
396+
measureService.events.on({'processCompleted': measureCompleted, 'processFailed': measureFailed});
397+
measureService.processAsync(measureParameters);
398+
});
399+
400+
it('processAsync_distanceMode', (done) => {
401+
var mapServiceURL = GlobeParameter.mapServiceURL;
402+
var worldMapURL = mapServiceURL + "World Map";
403+
var measureCompleted = (measureEventArgs) => {
404+
measureEventArgsSystem = measureEventArgs;
405+
try {
406+
var measureResult = measureEventArgsSystem.result;
407+
expect(measureResult).not.toBeNull();
408+
expect(measureResult.succeed).toBeTruthy();
409+
expect(measureResult.area).toEqual(-1);
410+
expect(measureResult.distance).toEqual(3.9981624957);
411+
expect(measureResult.unit).toBe("METER");
412+
measureService.destroy();
413+
expect(measureService.url == null).toBeTruthy();
414+
expect(measureService.isInTheSameDomain == null).toBeTruthy();
415+
expect(measureService.EVENT_TYPES == null).toBeTruthy();
416+
expect(measureService.events == null).toBeTruthy();
417+
expect(measureService.distanceMode == null).toBeTruthy();
418+
measureParameters.destroy();
419+
done();
420+
} catch (exception) {
421+
expect(false).toBeTruthy();
422+
console.log("MeasureService_" + exception.name + ":" + exception.message);
423+
measureService.destroy();
424+
measureParameters.destroy();
425+
done();
426+
}
427+
};
428+
var measureFailed = (serviceFailedEventArgs) => {
429+
serviceFailedEventArgsSystem = serviceFailedEventArgs;
430+
};
431+
var measureService = initMeasureService(worldMapURL,measureFailed,measureCompleted);
432+
var points = [new Point(0, 0), new Point(10, 10)];
433+
var geometry = new LinearRing(points);
434+
var measureParameters = new MeasureParameters(geometry,{ distanceMode: 'Planar' });
435+
expect(measureService).not.toBeNull();
436+
expect(measureService.url).toEqual(worldMapURL);
437+
spyOn(FetchRequest, 'commit').and.callFake((method,testUrl,params) => {
438+
expect(method).toBe("GET");
439+
expect(testUrl).toBe(worldMapURL+"/distance");
440+
expect(params).not.toBeNull();
441+
expect(params.distanceMode).toEqual('Planar');
442+
return Promise.resolve(new Response(`{"area":-1,"unit":"METER","distance": 3.9981624957}`));
443+
});
444+
measureService.events.on({'processCompleted': measureCompleted, 'processFailed': measureFailed});
445+
measureService.processAsync(measureParameters);
446+
});
350447
});
351448

0 commit comments

Comments
 (0)