@@ -113,16 +113,71 @@ export class WebMap extends Observable {
113113 }
114114
115115 /**
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
117177 * @description 重新渲染地图
118178 */
119179 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 ( ) ;
126181 this . createWebmap ( ) ;
127182 }
128183
@@ -490,7 +545,7 @@ export class WebMap extends Observable {
490545 let { baseLayer} = mapInfo , layerType = baseLayer . layerType ;
491546 //底图,使用默认的配置,不用存储的
492547 if ( layerType !== 'TILE' && layerType !== 'WMS' && layerType !== 'WMTS' ) {
493- this . getInternetMapInfo ( mapInfo . baseLayer ) ;
548+ this . getInternetMapInfo ( baseLayer ) ;
494549 } else if ( layerType === 'WMTS' ) {
495550 // 通过请求完善信息
496551 await this . getWmtsInfo ( baseLayer ) ;
@@ -513,15 +568,16 @@ export class WebMap extends Observable {
513568 this . mapParams . extent = baseLayer . extent ;
514569 this . mapParams . projection = mapInfo . projection ;
515570 }
516- if ( mapInfo . baseLayer && mapInfo . baseLayer . labelLayerVisible ) {
517- let layerInfo = mapInfo . baseLayer ;
571+ if ( baseLayer . labelLayerVisible ) {
518572 //存在天地图路网
519573 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
523577 } ) ;
524578 this . map . addLayer ( labelLayer ) ;
579+ // 挂载带baseLayer上,便于删除
580+ baseLayer . labelLayer = labelLayer ;
525581 }
526582 }
527583 /**
@@ -3037,6 +3093,8 @@ export class WebMap extends Observable {
30373093 pathLayer . setZIndex ( layerIndex ) ;
30383094 this . map . addLayer ( pathLayer ) ;
30393095 visibleScale && this . setVisibleScales ( pathLayer , visibleScale ) ;
3096+ // 挂载到layerInfo上,便于删除
3097+ layerInfo . pathLayer = pathLayer ;
30403098 }
30413099 let featureCache = { } , labelFeatureCache = { } , pathFeatureCache = { } , that = this ;
30423100 this . createDataflowService ( layerInfo , function ( featureCache , labelFeatureCache , pathFeatureCache ) {
@@ -3268,8 +3326,8 @@ export class WebMap extends Observable {
32683326 } ) ;
32693327 feature . setProperties ( { attributes : geojson . properties } ) ;
32703328 callback ( feature ) ;
3271-
32723329 } ) ;
3330+ layerInfo . dataflowService = dataflowService ;
32733331 }
32743332
32753333 /**
0 commit comments