cd-mapgis 1.0.77 → 1.0.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/OM.js +69 -136
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cd-mapgis",
3
- "version": "1.0.77",
3
+ "version": "1.0.78",
4
4
  "main": "./src/index.js",
5
5
  "types": "./src/index.d.ts",
6
6
  "type": "module",
package/src/OM.js CHANGED
@@ -131,114 +131,75 @@ export default class OM {
131
131
  }
132
132
  /**
133
133
  * 向地图视图添加图层
134
- * @param {*} p {mapViews(单个对象或者数组),
135
- * geoLayers(geoServer固定图层),
136
- * server(url,data,sort,layerCall),
137
- * comm{mapKey(dic中的key)}
134
+ * @param {*} p {mapView(地图对象,不传就是地图最后的初始化实例)
135
+ * mapKey(读取后端配置的默认加载的图层,不传默认def_view_layers)
136
+ * param(/map/getPushLayer 接口请求参数,默认为{})
137
+ * sort(/map/getPushLayer 返回的图层排序)
138
+ * layerCall(/map/getPushLayer 加载每个图层时,可以设置参数,如:查询条件)
138
139
  * }
139
140
  */
140
141
  static async viewLayers(p) {
141
142
  let params = OM._getParams();
142
143
  let layerHost = params.layerHost ? params.layerHost : {};
143
- let mapViews = p.mapViews ? (p.mapViews.length ? p.mapViews : [p.mapViews]) : [MapView.Instance];
144
- //清除之前的图层
145
- for (let k = 0; k < mapViews.length; k++) {
146
- let mapView = mapViews[k];
147
- let map = mapView.map;
148
- let layers = map.getLayers();
149
- layers.forEach(function (layer) {
150
- map.removeLayer(layer); // 移除每个图层
151
- });
152
- mapView.layerGroup = [];
153
- mapView.viewLayers = [];
154
- mapView.geoServerLayers = [];
155
- }
156
- //先加载后端默认加载的图层
157
- let mapKey = (p.comm && p.comm.mapKey) ? p.comm.mapKey : 'def_view_layers';
144
+ let mapView = p.mapView ? p.mapView : MapView.Instance;
145
+ let map = mapView.map;
146
+ //清除之前的图层
147
+ let layers = map.getLayers();
148
+ layers.forEach(function (layer) {
149
+ map.removeLayer(layer); // 移除每个图层
150
+ });
151
+ mapView.layerGroup = [];
152
+ mapView.viewLayers = [];
153
+ mapView.geoServerLayers = [];
154
+ //先加载后端默认加载的图层
155
+ let mapKey = p.mapKey ? p.mapKey : 'def_view_layers';
158
156
  let postRes = await OM.getDic(mapKey);
159
157
  let defViewLayers = postRes.data ? JSON.parse(postRes.data) : [];
160
- //遍历每个地图容器
161
- for (let k = 0; k < mapViews.length; k++) {
162
- let mapView = mapViews[k];
163
- let map = mapView.map;
164
- for (let i = 0; i < defViewLayers.length; i++) {
165
- let obj = defViewLayers[i];
166
- if (obj.type == 'ngXyz') {
167
- let layerUrl = obj.hostKey ? layerHost[obj.hostKey] : null;
168
- obj.url = layerUrl ? layerUrl : obj.url;
169
- obj.layer = LayerUtil.ngXyz(obj);
170
- } else if (obj.type == 'wmts') {
171
- let hostKey = obj.hostKey ? obj.hostKey : 'wmts';
172
- let layerUrl = layerHost[hostKey];
173
- obj.urlPre = layerUrl ? layerUrl : obj.urlPre;
174
- obj.layer = await LayerUtil.getWmtsLayer(obj);
175
- } else if (obj.type == 'geoServer') {
176
- let hostKey = obj.hostKey ? obj.hostKey : 'geoServer';
177
- let layerUrl = layerHost[hostKey];
178
- obj.url = InnerUtil.getGeoServerUrl(obj.url, layerUrl);
179
- obj.layer = LayerUtil.geoServerWmsLayer(obj);
180
- mapView.geoServerLayers.push(obj.name);
181
- } else if (obj.type == 'tdt') {
182
- obj.layer = LayerUtil.onLineTianditu(obj);
183
- }
184
- else {
185
- console.error("图层类型错误:", obj);
186
- continue;
187
- }
188
- obj.layer.setVisible(!!obj.open);
189
- //添加进入地图
190
- map.addLayer(obj.layer);
191
- //如果有分组
192
- if (obj.group) mapView.layerGroup.push(obj);
193
- //
194
- mapView.viewLayers.push({ type: 'def', name: obj.name, layer: obj.layer });
195
- }
196
- }
197
- //直接加载固定的geoServer图层
198
- let geoLayerUrl = layerHost["geoServer"];
199
- if (p.geoLayers && p.geoLayers.length > 0) {
200
- postRes = await OM.getDic("geoserver");
201
- if (!postRes.data) {
202
- throw new Error("未配置geoserver");
203
- }
204
- let geoserverDic = JSON.parse(postRes.data);
205
- let wmsUrl = geoserverDic.url + '/' + geoserverDic.workspace + '/wms';
206
- wmsUrl = InnerUtil.getGeoServerUrl(wmsUrl, geoLayerUrl);
207
- let geoParam = { workspace: geoserverDic.workspace, url: wmsUrl };
208
- let _layers = [];
209
- let layerNames = {};
210
- for (let i = 0; i < p.geoLayers.length; i++) {
211
- let l = p.geoLayers[i];
212
- _layers.push(l.layerName);
213
- layerNames[l.layerName] = l.title;
158
+ for (let i = 0; i < defViewLayers.length; i++) {
159
+ let obj = defViewLayers[i];
160
+ if (obj.type == 'ngXyz') {
161
+ let layerUrl = obj.hostKey ? layerHost[obj.hostKey] : null;
162
+ obj.url = layerUrl ? layerUrl : obj.url;
163
+ obj.layer = LayerUtil.ngXyz(obj);
164
+ } else if (obj.type == 'wmts') {
165
+ let hostKey = obj.hostKey ? obj.hostKey : 'wmts';
166
+ let layerUrl = layerHost[hostKey];
167
+ obj.urlPre = layerUrl ? layerUrl : obj.urlPre;
168
+ obj.layer = await LayerUtil.getWmtsLayer(obj);
169
+ } else if (obj.type == 'geoServer') {
170
+ let hostKey = obj.hostKey ? obj.hostKey : 'geoServer';
171
+ let layerUrl = layerHost[hostKey];
172
+ obj.url = InnerUtil.getGeoServerUrl(obj.url, layerUrl);
173
+ obj.layer = LayerUtil.geoServerWmsLayer(obj);
174
+ mapView.geoServerLayers.push(obj.name);
175
+ } else if (obj.type == 'tdt') {
176
+ obj.layer = LayerUtil.onLineTianditu(obj);
214
177
  }
215
- postRes = await OM.checkPushLayers({ layers: _layers });
216
- let pushLayers = postRes.data ? postRes.data : [];
217
- for (let k = 0; k < mapViews.length; k++) {
218
- let mapView = mapViews[k];
219
- let map = mapView.map;
220
- for (let i = 0; i < pushLayers.length; i++) {
221
- geoParam.name = pushLayers[i];
222
- let layer = LayerUtil.geoServerWmsLayer(geoParam);
223
- map.addLayer(layer);
224
- mapView.viewLayers.push({ type: 'geoLayer', name: layerNames[geoParam.name], layer: layer });
225
- mapView.geoServerLayers.push(geoParam.name);
226
- }
178
+ else {
179
+ console.error("图层类型错误:", obj);
180
+ continue;
227
181
  }
182
+ obj.layer.setVisible(!!obj.open);
183
+ //添加进入地图
184
+ map.addLayer(obj.layer);
185
+ //如果有分组
186
+ if (obj.group) mapView.layerGroup.push(obj);
187
+ //
188
+ mapView.viewLayers.push({ type: 'def', name: obj.name, layer: obj.layer });
228
189
  }
229
190
  //再加载geoServer接口图层
230
- let pushLayerParam = (p.server && p.server.data) ? p.server.data : {};
231
- let res = await OM.post("/map/getPushLayer", pushLayerParam);
191
+ let param = p.param ? p.param : {};
192
+ let res = await OM.post("/map/getPushLayer", param);
232
193
  if (res != null && res.data != null) {
233
194
  let d = res.data;
234
195
  let layerInfos = d.layerInfos;
235
196
  let wmsUrl = InnerUtil.getGeoServerUrl(d.wmsUrl, geoLayerUrl);
236
197
  let geoParam = { workspace: d.workspace, url: wmsUrl };
237
198
  //排序
238
- if (p.server.sort) {
199
+ if (p.sort) {
239
200
  let a = [];
240
- for (let m = 0; m < p.server.sort.length; m++) {
241
- let key = p.server.sort[m].toLowerCase();
201
+ for (let m = 0; m < p.sort.length; m++) {
202
+ let key = p.sort[m].toLowerCase();
242
203
  for (let n = 0; n < layerInfos.length; n++) {
243
204
  let name = layerInfos[n].shpNameLower;
244
205
  if (name.indexOf(key) != -1) {
@@ -254,68 +215,40 @@ export default class OM {
254
215
  layerInfos = a;
255
216
  }
256
217
  //加载
257
- let layerCall = p.server.layerCall;
258
- for (let k = 0; k < mapViews.length; k++) {
259
- let mapView = mapViews[k];
260
- let map = mapView.map;
261
- for (let i = 0; i < layerInfos.length; i++) {
262
- let info = layerInfos[i];
263
- geoParam.name = info.tableName;
264
- geoParam.mv = layerCall ? layerCall(info.shpNameLower) : null;
265
- let layer = LayerUtil.geoServerWmsLayer(geoParam);
266
- map.addLayer(layer);
267
- mapView.viewLayers.push({ type: 'fc', name: info.shpName, layer: layer, info: info });
268
- mapView.geoServerLayers.push(geoParam.name);
269
- }
218
+ let layerCall = p.layerCall;
219
+ for (let i = 0; i < layerInfos.length; i++) {
220
+ let info = layerInfos[i];
221
+ geoParam.name = info.tableName;
222
+ geoParam.mv = layerCall ? layerCall(info.shpNameLower) : null;
223
+ let layer = LayerUtil.geoServerWmsLayer(geoParam);
224
+ map.addLayer(layer);
225
+ mapView.viewLayers.push({ type: 'fc', name: info.shpName, layer: layer, info: info });
226
+ mapView.geoServerLayers.push(geoParam.name);
270
227
  }
271
228
  }
272
229
  //显示图层范围
273
- let geoServerLayers = mapViews[0].geoServerLayers;
230
+ let geoServerLayers = mapView.geoServerLayers;
274
231
  if (geoServerLayers.length > 0) {
275
232
  let res = await OM.getBound({ layers: geoServerLayers });
276
233
  if (res.data) {
277
234
  var bounds = [res.data.minX, res.data.minY, res.data.maxX, res.data.maxY];
278
- for (let k = 0; k < mapViews.length; k++) {
279
- let mapView = mapViews[k];
280
- let map = mapView.map;
281
- map.getView().fit(bounds, map.getSize());
282
- mapView._reset_bounds = bounds;
283
- }
235
+ map.getView().fit(bounds, map.getSize());
236
+ mapView._reset_bounds = bounds;
284
237
  }
285
238
  }
286
- //只有一个图层时返回加载的图层
287
- if (mapViews.length == 1) {
288
- return mapViews[0].viewLayers;
289
- }
239
+ return mapView.viewLayers;
290
240
  }
291
241
  /**
292
242
  * 将地图缩放到指定的图层范围
293
243
  * @param {*} p {layers:[]}
294
244
  */
295
- static async viewToLayer(p) {
245
+ static async fitToLayer(p) {
246
+ let mapView = p.mapView ? p.mapView : MapView.Instance;
247
+ let map = mapView.map;
296
248
  let res = await OM.getBound(p);
297
249
  if (res.data) {
298
- var bounds = [res.data.minX, res.data.minY, res.data.maxX, res.data.maxY];
299
- for (let k = 0; k < mapViews.length; k++) {
300
- let mapView = mapViews[k];
301
- let map = mapView.map;
302
- map.getView().fit(bounds, map.getSize());
303
- }
304
- } else {
305
- console.log("未查询到图层:", p);
306
- }
307
- }
308
- /**
309
- * 将地图缩放到指定的图层范围
310
- * @param {*} p
311
- */
312
- static async fitToLayers(p) {
313
- let map = p.mapView ? p.mapView : MapView.Instance;
314
- let url = p.url ? p.url : "/api/getPushLayer";
315
- let res = await OM.post(url, p);
316
- let d = res.data;
317
- if (d.bound) {
318
- var bounds = [d.bound.minX, d.bound.minY, d.bound.maxX, d.bound.maxY];
250
+ let d = res.data;
251
+ var bounds = [d.minX, d.minY, d.maxX, d.maxY];
319
252
  map.getView().fit(bounds, map.getSize());
320
253
  } else {
321
254
  console.log("未查询到图层:", p);