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.
- package/package.json +1 -1
- package/src/OM.js +70 -136
package/package.json
CHANGED
package/src/OM.js
CHANGED
|
@@ -131,114 +131,76 @@ export default class OM {
|
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
133
|
* 向地图视图添加图层
|
|
134
|
-
* @param {*} p {
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
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
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
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
|
|
231
|
-
let res = await OM.post("/map/getPushLayer",
|
|
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.
|
|
200
|
+
if (p.sort) {
|
|
239
201
|
let a = [];
|
|
240
|
-
for (let m = 0; m < p.
|
|
241
|
-
let key = p.
|
|
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.
|
|
258
|
-
for (let
|
|
259
|
-
let
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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 =
|
|
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
|
-
|
|
279
|
-
|
|
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
|
|
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
|
-
|
|
299
|
-
|
|
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);
|