| 
					
				 | 
			
			
				@@ -8,21 +8,148 @@ import WKT from "ol/format/WKT.js"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import ScaleLine from "ol/control/ScaleLine"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { useRouter } from "vue-router"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import eventBus from "@/api/eventBus"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {VectorStyle} from "@/utils/ol-map/KMap"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import XYZLayer from "@/utils/ol-map/XYZLayer"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import GeoJsonLayer from "@/utils/ol-map/GeoJsonLayer"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import StaticImgLayer from "@/utils/ol-map/StaticImgLayer"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @description 地图层对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ function getColorByVal(val, legendData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (let i = 0; i < legendData.level.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let [min, max] = legendData.level[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (val >= min && val <= max) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return legendData.colors[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return undefined; // 如果 val 不在任何区间内,返回 undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class HomeMap { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     constructor() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let that = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let vectorStyle = new KMap.VectorStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.vectorStyle = vectorStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.vectorStyle11 = new VectorStyle() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.layerData = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     initMap(location, target) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let level = 19.2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let coordinate = util.wktCastGeom(location).getFirstCoordinate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.kmap = new KMap.Map(target, level, coordinate[0], coordinate[1], null, 6, 22); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        eventBus.emit("homeMap:init", this.kmap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.initStaticMapLayers(this.kmap) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    initStaticMapLayers(map){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let that = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        VE_API.warning.fetchWarningLayer({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            k: "static_map", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            resultType: "json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }).then(({data}) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(let key in data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let item = data[key] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(item.type === "xyz"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    that.layerData[key] = {legend:item.legend, layer:that.addXyzLayer(map, item)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else if(item.type === "geojson"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    that.layerData[key] = {legend:item.legend, legendData:item.legendData, layer:that.addGeoJsonLayer(map, item, key)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }else if(item.type === "img"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    console.log('that.addStaticImgLayer(map, item)',that.addStaticImgLayer(map, item)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.layerData[key] = {legend:item.legend, layer:that.addStaticImgLayer(map, item)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    console.log('that.layerData',this.layerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            console.log('that.layerData',that.layerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 时间轴 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // eventBus.on("weatherTime:changeTime", ({index}) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     this.timeIndex = index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //     this.show(this.layerName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    show(key,isFit = false){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (isFit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.timeIndex = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.layerName = key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.hideAll() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let keyText = key+this.timeIndex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let layer = this.layerData[keyText].layer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // eventBus.emit("alarmList:changeMapLayer", {legendUrl:layer.layer.get("legend"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     colors:layer.layer.get("colors"), labels:layer.layer.get("labels")}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        layer.show() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(isFit && layer.layer.getExtent){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let extent = layer.layer.getExtent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(extent && extent[0] != Infinity){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                layer.mapInstance.fit(extent,{padding:[-200,-200,-200,-200]}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    showSingle(key,isFit = false){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.layerName = key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.hideAll() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('this.layerData',this.layerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let layer = this.layerData[key].layer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('layer',layer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // eventBus.emit("alarmList:changeMapLayer", {legendUrl:layer.layer.get("legend"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //     colors:layer.layer.get("colors"), labels:layer.layer.get("labels")}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        layer.show() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(isFit && layer.layer.getExtent){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let extent = layer.layer.getExtent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(extent && extent[0] != Infinity){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                layer.mapInstance.fit(extent,{padding:[0,0,0,0]}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hideAll(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let key in this.layerData){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let layer = this.layerData[key].layer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            layer.hide() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addStaticImgLayer(map, item){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        item["opacity"] = 0.5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let imgLayer = new StaticImgLayer(item.url, item, 3, map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imgLayer.hide() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(item.legendData){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgLayer.layer.set("colors", item.legendData.colors) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            imgLayer.layer.set("labels", item.legendData.label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        imgLayer.layer.set("legend", item.legend) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return imgLayer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addXyzLayer(map, item){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let xyz = new XYZLayer(item.url, item, 3, map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        xyz.hide() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return xyz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addGeoJsonLayer(map, item, key){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let that = this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        item["style"] = function(feature){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let val = feature.get(item.legendData.paramKey) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let cacheKey = `${key}_${item.legendData.paramKey}_${val}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let style = that.cacheStyle[cacheKey] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!style){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let color = getColorByVal(val, item.legendData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let fillColor = color 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let strokeColor = color 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                style = that.vectorStyle11.getPolygonStyle(fillColor, strokeColor, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                that.cacheStyle[cacheKey] = style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return style 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let geoJsonLayer = new GeoJsonLayer(item.url, item, 3, map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        geoJsonLayer.layer.set("colors", item.legendData.colors) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        geoJsonLayer.layer.set("labels", item.legendData.label) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        geoJsonLayer.hide() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return geoJsonLayer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |