@@ -113,16 +113,71 @@ export class WebMap extends Observable {
113
113
}
114
114
115
115
/**
116
- * @function ol.supermap.WebMap.prototype.createMap
116
+ * @function ol.supermap.WebMap.prototype._removeBaseLayer
117
+ * @description 移除底图
118
+ */
119
+ _removeBaseLayer ( ) {
120
+ const map = this . map ;
121
+ const { layer, labelLayer } = this . baseLayer ;
122
+ // 移除天地图标签图层
123
+ labelLayer && map . removeLayer ( labelLayer ) ;
124
+ // 移除图层
125
+ layer && map . removeLayer ( layer ) ;
126
+ this . baseLayer = null ;
127
+ }
128
+
129
+ /**
130
+ * @function ol.supermap.WebMap.prototype._removeLayers
131
+ * @description 移除叠加图层
132
+ */
133
+ _removeLayers ( ) {
134
+ const map = this . map ;
135
+ this . layers . forEach ( ( { layerType, layer, labelLayer, pathLayer, dataflowService } ) => {
136
+ if ( ! layer ) {
137
+ return ;
138
+ }
139
+ if ( layerType === 'MIGRATION' ) {
140
+ layer . remove ( ) ;
141
+ return ;
142
+ }
143
+ if ( layerType === 'DATAFLOW_POINT_TRACK' || layerType === 'DATAFLOW_HEAT' ) {
144
+ // 移除轨迹图层
145
+ pathLayer && map . removeLayer ( pathLayer ) ;
146
+ // 取消订阅
147
+ dataflowService && dataflowService . unSubscribe ( ) ;
148
+ }
149
+ // 移除标签图层
150
+ labelLayer && map . removeLayer ( labelLayer ) ;
151
+ // 移除图层
152
+ map . removeLayer ( layer )
153
+ } ) ;
154
+ this . layers = [ ] ;
155
+ }
156
+
157
+ /**
158
+ * @function ol.supermap.WebMap.prototype.clear
159
+ * @description 清空地图
160
+ */
161
+ clear ( ) {
162
+ // 比例尺
163
+ this . scales = [ ] ;
164
+ // 分辨率
165
+ this . resolutionArray = [ ] ;
166
+ // 比例尺-分辨率 {scale: resolution}
167
+ this . resolutions = { } ;
168
+ // 计数叠加图层,处理过的数量(成功和失败都会计数)
169
+ this . layerAdded = 0 ;
170
+
171
+ this . _removeBaseLayer ( ) ;
172
+ this . _removeLayers ( ) ;
173
+ }
174
+
175
+ /**
176
+ * @function ol.supermap.WebMap.prototype.reRender
117
177
* @description 重新渲染地图
118
178
*/
119
179
reRender ( ) {
120
- // 移除所有图层 没找到清空地图的方法
121
- this . layerAdded = 0 ;
122
- const layers = this . map . getLayers ( ) . getArray ( ) ;
123
- for ( let i = 0 , length = layers . length ; i < length ; i ++ ) {
124
- this . map . removeLayer ( layers [ 0 ] ) ;
125
- }
180
+ this . clear ( ) ;
126
181
this . createWebmap ( ) ;
127
182
}
128
183
@@ -490,7 +545,7 @@ export class WebMap extends Observable {
490
545
let { baseLayer} = mapInfo , layerType = baseLayer . layerType ;
491
546
//底图,使用默认的配置,不用存储的
492
547
if ( layerType !== 'TILE' && layerType !== 'WMS' && layerType !== 'WMTS' ) {
493
- this . getInternetMapInfo ( mapInfo . baseLayer ) ;
548
+ this . getInternetMapInfo ( baseLayer ) ;
494
549
} else if ( layerType === 'WMTS' ) {
495
550
// 通过请求完善信息
496
551
await this . getWmtsInfo ( baseLayer ) ;
@@ -513,15 +568,16 @@ export class WebMap extends Observable {
513
568
this . mapParams . extent = baseLayer . extent ;
514
569
this . mapParams . projection = mapInfo . projection ;
515
570
}
516
- if ( mapInfo . baseLayer && mapInfo . baseLayer . labelLayerVisible ) {
517
- let layerInfo = mapInfo . baseLayer ;
571
+ if ( baseLayer . labelLayerVisible ) {
518
572
//存在天地图路网
519
573
let labelLayer = new olLayer . Tile ( {
520
- source : this . createTiandituSource ( layerInfo . layerType , mapInfo . projection , true ) ,
521
- zIndex : layerInfo . zIndex || 1 ,
522
- visible : layerInfo . visible
574
+ source : this . createTiandituSource ( baseLayer . layerType , mapInfo . projection , true ) ,
575
+ zIndex : baseLayer . zIndex || 1 ,
576
+ visible : baseLayer . visible
523
577
} ) ;
524
578
this . map . addLayer ( labelLayer ) ;
579
+ // 挂载带baseLayer上,便于删除
580
+ baseLayer . labelLayer = labelLayer ;
525
581
}
526
582
}
527
583
/**
@@ -3037,6 +3093,8 @@ export class WebMap extends Observable {
3037
3093
pathLayer . setZIndex ( layerIndex ) ;
3038
3094
this . map . addLayer ( pathLayer ) ;
3039
3095
visibleScale && this . setVisibleScales ( pathLayer , visibleScale ) ;
3096
+ // 挂载到layerInfo上,便于删除
3097
+ layerInfo . pathLayer = pathLayer ;
3040
3098
}
3041
3099
let featureCache = { } , labelFeatureCache = { } , pathFeatureCache = { } , that = this ;
3042
3100
this . createDataflowService ( layerInfo , function ( featureCache , labelFeatureCache , pathFeatureCache ) {
@@ -3268,8 +3326,8 @@ export class WebMap extends Observable {
3268
3326
} ) ;
3269
3327
feature . setProperties ( { attributes : geojson . properties } ) ;
3270
3328
callback ( feature ) ;
3271
-
3272
3329
} ) ;
3330
+ layerInfo . dataflowService = dataflowService ;
3273
3331
}
3274
3332
3275
3333
/**
0 commit comments