Skip to content

Commit 4993de6

Browse files
[fix]preferServer
1 parent fa15333 commit 4993de6

File tree

12 files changed

+75
-14
lines changed

12 files changed

+75
-14
lines changed

docs/zh/api/web-map/map.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Web Map 地图组件。支持 MapboxGL Map,SuperMap iPortal/Online 地图。<b
2020
| mapId | SuperMap iPortal/Online 地图资源 ID | number \| string \| object | - | - |
2121
| target | 地图容器 ID | string | - | map |
2222
| serverUrl | SuperMap iPortal/Online 服务器地址 | string | - | https://www.supermapol.com |
23+
| preferServer | iServer rest/data服务, 使用服务器直接返回geojson。 | boolean | - | false |
2324
| accessToken | 令牌,用于访问 SuperMap iPortal 中受保护资源 | string | - | - |
2425
| accessKey | SuperMap Online 提供的一种基于 Token(令牌)的用户身份验证机制 | string | - | - |
2526
| tiandituKey | 天地图的服务 Key | string | - | - |

src/common/_utils/__tests__/iServerRestService.spec.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ describe('iServerRestService', () => {
9999
afterEach(() => {
100100
jest.resetAllMocks();
101101
});
102-
103102
it('getMapFeatures hasGeometry false', done => {
104103
const service = new iServerRestService('url', { hasGeometry: false, epsgCode: 3857 });
105104
service.on({
@@ -147,12 +146,27 @@ describe('iServerRestService', () => {
147146
service.getMapFeatures({ dataUrl: 'http://fakeiserver/rest/map', mapName: 'mockLayer' }, { keyWord: 'A' });
148147
});
149148

149+
it('getDataFeatures preferServer true', done => {
150+
const service = new iServerRestService('url', { hasGeometry: true, returnFeaturesOnly: true, preferServer: true });
151+
service.getDataFeatures(
152+
{ datasetName: 'District_pt', dataSourceName: 'China', dataUrl: 'http://fakeiserver/rest/data' },
153+
{}
154+
);
155+
expect(service.options.preferServer).toBe(true);
156+
service.on({
157+
getdatasucceeded: data => {
158+
expect(service.options.preferServer).toBe(true);
159+
done();
160+
}
161+
});
162+
});
150163
it('getDataFeatures', done => {
151164
const service = new iServerRestService('url', { hasGeometry: true });
152165
service.getDataFeatures(
153166
{ datasetName: 'District_pt', dataSourceName: 'China', dataUrl: 'http://fakeiserver/rest/data' },
154167
{}
155168
);
169+
expect(service.options.preferServer).toBe(undefined);
156170
service.on({
157171
getdatasucceeded: data => {
158172
expect(data.fields).toEqual(['SMID', 'NAME']);
@@ -222,4 +236,3 @@ describe('iServerRestService', () => {
222236
done();
223237
});
224238
});
225-

src/common/_utils/iServerRestService.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,8 @@ export default class iServerRestService extends Events {
297297
_queryDataFeatures(url, queryInfo) {
298298
const featureService = new FeatureService(url, {
299299
proxy: this.options.proxy,
300-
withCredentials: queryInfo.withCredentials
300+
withCredentials: queryInfo.withCredentials,
301+
preferServer: this.options.preferServer
301302
});
302303
const expectCountOptions = this._calcFeaturesExpectCountOptions(queryInfo);
303304
const pickedCommonParams = {

src/mapboxgl/web-map/WebMap.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ class SmWebMap extends Mixins(VmUpdater, MapEvents) {
142142
@Prop({ default: false }) loading: boolean;
143143
@Prop() background: string;
144144
@Prop() iportalServiceProxyUrlPrefix: string;
145+
@Prop({ default: false }) preferServer: boolean;
145146
@Prop() mapOptions: any;
146147
@Prop({ default: true }) autoresize: boolean;
147148
@Prop({ default: false }) keepBounds: boolean;
@@ -334,6 +335,7 @@ class SmWebMap extends Mixins(VmUpdater, MapEvents) {
334335
isSuperMapOnline,
335336
proxy,
336337
mapOptions,
338+
preferServer,
337339
iportalServiceProxyUrlPrefix,
338340
tileTransformRequest
339341
} = this.$props;
@@ -353,7 +355,8 @@ class SmWebMap extends Mixins(VmUpdater, MapEvents) {
353355
isSuperMapOnline,
354356
proxy,
355357
iportalServiceProxyUrlPrefix,
356-
tileTransformRequest
358+
tileTransformRequest,
359+
preferServer
357360
},
358361
mapOptions
359362
);

src/mapboxgl/web-map/WebMapViewModel.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const OPACITY_MAP = {
5454
* @param {boolean} [options.excludePortalProxyUrl] - server 传递过来的 URL 是否带有代理。当设置 `id` 时有效。
5555
* @param {boolean} [options.ignoreBaseProjection =false] - 是否忽略底图坐标系和叠加图层坐标系不一致。
5656
* @param {String} [options.iportalServiceProxyUrlPrefix] - iportal的代理服务地址前缀。
57+
* @param {boolean} [options.preferServer=false] - iServer rest/data服务, 使用服务器直接返回geojson。
5758
*/
5859
interface webMapOptions {
5960
target?: string;
@@ -71,6 +72,7 @@ interface webMapOptions {
7172
zoom?: number;
7273
proxy?: boolean | string;
7374
iportalServiceProxyUrlPrefix?: string;
75+
preferServer?: boolean;
7476
checkSameLayer?: boolean;
7577
map?: mapboxglTypes.Map;
7678
layerFilter?: () => boolean;
@@ -208,7 +210,8 @@ export default class WebMapViewModel extends Events {
208210
withCredentials: options.withCredentials || false,
209211
credentialKey: (options.accessKey && 'key') || (options.accessToken && 'token'),
210212
credentialValue: options.accessKey || options.accessToken,
211-
proj4
213+
proj4,
214+
preferServer: options.preferServer || false
212215
};
213216
this.serverUrl = this.options.server;
214217
this.mapOptions = mapOptions;

src/mapboxgl/web-map/__tests__/WebMap.spec.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,30 @@ describe('WebMap.vue', () => {
9595
expect(wrapper.vm.panControl.show).toBe(false);
9696
expect(wrapper.vm.scaleControl.show).toBe(false);
9797
expect(wrapper.vm.zoomControl.show).toBe(false);
98+
expect(wrapper.vm.preferServer).toBe(false);
99+
done();
100+
});
101+
102+
it('initial_serverUrl preferServer true', async done => {
103+
const fetchResource = {
104+
'https://fakeiportal.supermap.io/iportal/web/config/portal.json': iportal_serviceProxy,
105+
'https://fakeiportal.supermap.io/iportal/web/maps/123/map.json': uniqueLayer_point,
106+
'https://fakeiportal.supermap.io/iportal/web/datas/676516522/content.json?pageSize=9999999&currentPage=1&parentResType=MAP&parentResId=123':
107+
layerData_CSV
108+
};
109+
mockFetch(fetchResource);
110+
const spy = jest.spyOn(mapboxgl, 'Map');
111+
wrapper = mount(SmWebMap, {
112+
localVue,
113+
propsData: {
114+
serverUrl: 'https://fakeiportal.supermap.io/iportal',
115+
mapId: '123',
116+
preferServer: true
117+
}
118+
});
119+
await mapWrapperLoaded(wrapper);
120+
expect(spy).toBeCalled();
121+
expect(wrapper.vm.preferServer).toBe(true);
98122
done();
99123
});
100124

@@ -774,7 +798,7 @@ describe('WebMap.vue', () => {
774798
mapId: '249495311'
775799
},
776800
mocks: {
777-
$t: (msg) => msg
801+
$t: msg => msg
778802
}
779803
});
780804
const deleteMap = jest.spyOn(mapEvent.$options, 'deleteMap');

src/mapboxgl/web-map/__tests__/WebMapViewModel.spec.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,22 @@ describe('WebMapViewModel.spec', () => {
200200
jest.restoreAllMocks();
201201
jest.useRealTimers();
202202
});
203-
203+
it('add uniqueLayer point preferServer true', async done => {
204+
const id = {
205+
...uniqueLayer_point,
206+
level: '',
207+
visibleExtent: [0, 1, 2, 3]
208+
};
209+
const callback = function (data) {
210+
expect(data.map).not.toBeUndefined();
211+
done();
212+
};
213+
const viewModel = new WebMapViewModel(id, { ...commonOption, preferServer: true });
214+
viewModel.on({ addlayerssucceeded: callback });
215+
await flushPromises();
216+
jest.advanceTimersByTime(0);
217+
expect(viewModel.options.preferServer).toBe(true);
218+
});
204219
it('add uniqueLayer point', async done => {
205220
const id = {
206221
...uniqueLayer_point,
@@ -215,6 +230,8 @@ describe('WebMapViewModel.spec', () => {
215230
viewModel.on({ addlayerssucceeded: callback });
216231
await flushPromises();
217232
jest.advanceTimersByTime(0);
233+
expect(viewModel.options.preferServer).toBe(false);
234+
218235
});
219236

220237
// public Func

src/mapboxgl/web-map/control/mini-map/MiniMapViewModel.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import mapboxgl from 'vue-iclient/static/libs/mapboxgl/mapbox-gl-enhance';
2-
import clonedeep from 'lodash.clonedeep';
32
import debounce from 'lodash.debounce';
43

54
/**
@@ -64,7 +63,7 @@ export default class MiniMapViewModel extends mapboxgl.Evented {
6463
this._miniMap = new mapboxgl.Map({
6564
attributionControl: false,
6665
container: _this._container,
67-
style: clonedeep(_this._parentMap.getStyle()),
66+
style: _this._parentMap.getStyle(),
6867
zoom: 1,
6968
crs: this._parentMap.getCRS(),
7069
center: [0, 0],

static/libs/iclient-common/iclient-common-webmapv2base.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/libs/iclient-common/iclient-common.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)