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.
- package/package.json +1 -1
- package/src/OM.js +69 -136
package/package.json
CHANGED
package/src/OM.js
CHANGED
|
@@ -131,114 +131,75 @@ 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 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
|
-
|
|
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");
|
|
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
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
|
231
|
-
let res = await OM.post("/map/getPushLayer",
|
|
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.
|
|
199
|
+
if (p.sort) {
|
|
239
200
|
let a = [];
|
|
240
|
-
for (let m = 0; m < p.
|
|
241
|
-
let key = p.
|
|
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.
|
|
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
|
-
}
|
|
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 =
|
|
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
|
-
|
|
279
|
-
|
|
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
|
|
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
|
-
|
|
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];
|
|
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);
|