cd-mapgis 1.0.77 → 1.0.79

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 +70 -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.79",
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,76 @@ 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 geoLayerUrl = layerHost["geoServer"];
145
+ let mapView = p.mapView ? p.mapView : MapView.Instance;
146
+ let map = mapView.map;
147
+ //清除之前的图层
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
+ let mapKey = p.mapKey ? p.mapKey : 'def_view_layers';
158
157
  let postRes = await OM.getDic(mapKey);
159
158
  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");
159
+ for (let i = 0; i < defViewLayers.length; i++) {
160
+ let obj = defViewLayers[i];
161
+ if (obj.type == 'ngXyz') {
162
+ let layerUrl = obj.hostKey ? layerHost[obj.hostKey] : null;
163
+ obj.url = layerUrl ? layerUrl : obj.url;
164
+ obj.layer = LayerUtil.ngXyz(obj);
165
+ } else if (obj.type == 'wmts') {
166
+ let hostKey = obj.hostKey ? obj.hostKey : 'wmts';
167
+ let layerUrl = layerHost[hostKey];
168
+ obj.urlPre = layerUrl ? layerUrl : obj.urlPre;
169
+ obj.layer = await LayerUtil.getWmtsLayer(obj);
170
+ } else if (obj.type == 'geoServer') {
171
+ let hostKey = obj.hostKey ? obj.hostKey : 'geoServer';
172
+ let layerUrl = layerHost[hostKey];
173
+ obj.url = InnerUtil.getGeoServerUrl(obj.url, layerUrl);
174
+ obj.layer = LayerUtil.geoServerWmsLayer(obj);
175
+ mapView.geoServerLayers.push(obj.name);
176
+ } else if (obj.type == 'tdt') {
177
+ obj.layer = LayerUtil.onLineTianditu(obj);
203
178
  }
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;
214
- }
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
- }
179
+ else {
180
+ console.error("图层类型错误:", obj);
181
+ continue;
227
182
  }
183
+ obj.layer.setVisible(!!obj.open);
184
+ //添加进入地图
185
+ map.addLayer(obj.layer);
186
+ //如果有分组
187
+ if (obj.group) mapView.layerGroup.push(obj);
188
+ //
189
+ mapView.viewLayers.push({ type: 'def', name: obj.name, layer: obj.layer });
228
190
  }
229
191
  //再加载geoServer接口图层
230
- let pushLayerParam = (p.server && p.server.data) ? p.server.data : {};
231
- let res = await OM.post("/map/getPushLayer", pushLayerParam);
192
+ let param = p.param ? p.param : {};
193
+ let res = await OM.post("/map/getPushLayer", param);
232
194
  if (res != null && res.data != null) {
233
195
  let d = res.data;
234
196
  let layerInfos = d.layerInfos;
235
197
  let wmsUrl = InnerUtil.getGeoServerUrl(d.wmsUrl, geoLayerUrl);
236
198
  let geoParam = { workspace: d.workspace, url: wmsUrl };
237
199
  //排序
238
- if (p.server.sort) {
200
+ if (p.sort) {
239
201
  let a = [];
240
- for (let m = 0; m < p.server.sort.length; m++) {
241
- let key = p.server.sort[m].toLowerCase();
202
+ for (let m = 0; m < p.sort.length; m++) {
203
+ let key = p.sort[m].toLowerCase();
242
204
  for (let n = 0; n < layerInfos.length; n++) {
243
205
  let name = layerInfos[n].shpNameLower;
244
206
  if (name.indexOf(key) != -1) {
@@ -254,68 +216,40 @@ export default class OM {
254
216
  layerInfos = a;
255
217
  }
256
218
  //加载
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
- }
219
+ let layerCall = p.layerCall;
220
+ for (let i = 0; i < layerInfos.length; i++) {
221
+ let info = layerInfos[i];
222
+ geoParam.name = info.tableName;
223
+ geoParam.mv = layerCall ? layerCall(info.shpNameLower) : null;
224
+ let layer = LayerUtil.geoServerWmsLayer(geoParam);
225
+ map.addLayer(layer);
226
+ mapView.viewLayers.push({ type: 'fc', name: info.shpName, layer: layer, info: info });
227
+ mapView.geoServerLayers.push(geoParam.name);
270
228
  }
271
229
  }
272
230
  //显示图层范围
273
- let geoServerLayers = mapViews[0].geoServerLayers;
231
+ let geoServerLayers = mapView.geoServerLayers;
274
232
  if (geoServerLayers.length > 0) {
275
233
  let res = await OM.getBound({ layers: geoServerLayers });
276
234
  if (res.data) {
277
235
  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
- }
236
+ map.getView().fit(bounds, map.getSize());
237
+ mapView._reset_bounds = bounds;
284
238
  }
285
239
  }
286
- //只有一个图层时返回加载的图层
287
- if (mapViews.length == 1) {
288
- return mapViews[0].viewLayers;
289
- }
240
+ return mapView.viewLayers;
290
241
  }
291
242
  /**
292
243
  * 将地图缩放到指定的图层范围
293
244
  * @param {*} p {layers:[]}
294
245
  */
295
- static async viewToLayer(p) {
246
+ static async fitToLayer(p) {
247
+ let mapView = p.mapView ? p.mapView : MapView.Instance;
248
+ let map = mapView.map;
296
249
  let res = await OM.getBound(p);
297
250
  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];
251
+ let d = res.data;
252
+ var bounds = [d.minX, d.minY, d.maxX, d.maxY];
319
253
  map.getView().fit(bounds, map.getSize());
320
254
  } else {
321
255
  console.log("未查询到图层:", p);