|
|
@@ -19,9 +19,15 @@ import StaticImgLayer from "../../utils/ol-map/StaticImgLayer";
|
|
|
|
|
|
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];
|
|
|
+ if(legendData.level[i] instanceof Array){
|
|
|
+ let [min, max] = legendData.level[i];
|
|
|
+ if (val >= min && val <= max) {
|
|
|
+ return legendData.colors[i];
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(val === legendData.level[i]){
|
|
|
+ return legendData.colors[i];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return undefined; // 如果 val 不在任何区间内,返回 undefined
|
|
|
@@ -31,37 +37,45 @@ function getColorByVal(val, legendData) {
|
|
|
* @description 全景化地图层对象
|
|
|
*/
|
|
|
class StaticMapLayers {
|
|
|
- constructor(map){
|
|
|
- this.initStaticMapLayers(map)
|
|
|
+ constructor(map, data){
|
|
|
this.vectorStyle = new VectorStyle()
|
|
|
this.layerData = {}
|
|
|
this.cacheStyle = {}
|
|
|
this.timeIndex = 0
|
|
|
this.layerName = ""
|
|
|
+ this.initStaticMapLayers(map,data)
|
|
|
}
|
|
|
- initStaticMapLayers(map){
|
|
|
+ initStaticMapLayers(map,data){
|
|
|
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"){
|
|
|
- that.layerData[key] = {legend:item.legend, layer:that.addStaticImgLayer(map, item)}
|
|
|
- }
|
|
|
- }
|
|
|
- // that.autoTest()
|
|
|
- // 时间轴
|
|
|
- eventBus.on("weatherTime:changeTime", ({index}) => {
|
|
|
- this.timeIndex = index
|
|
|
- this.show(this.layerName)
|
|
|
+ if(data){
|
|
|
+ that.initStaticMapLayer(map,data)
|
|
|
+ }else{
|
|
|
+ VE_API.warning.fetchWarningLayer({
|
|
|
+ k: "static_map",
|
|
|
+ resultType: "json",
|
|
|
+ }).then(({data}) => {
|
|
|
+ that.initStaticMapLayer(map,data)
|
|
|
+ // that.autoTest()
|
|
|
+ // 时间轴
|
|
|
+ eventBus.on("weatherTime:changeTime", ({index}) => {
|
|
|
+ this.timeIndex = index
|
|
|
+ this.show(this.layerName)
|
|
|
+ })
|
|
|
})
|
|
|
- })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ initStaticMapLayer(map,data){
|
|
|
+ for(let key in data){
|
|
|
+ let item = data[key]
|
|
|
+ if(item.type === "xyz"){
|
|
|
+ this.layerData[key] = {legend:item.legend, layer:this.addXyzLayer(map, item)}
|
|
|
+ }else if(item.type === "geojson"){
|
|
|
+ this.layerData[key] = {legend:item.legend, legendData:item.legendData, layer:this.addGeoJsonLayer(map, item, key)}
|
|
|
+ }else if(item.type === "img"){
|
|
|
+ this.layerData[key] = {legend:item.legend, layer:this.addStaticImgLayer(map, item)}
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
show(key,isFit = false){
|
|
|
@@ -83,9 +97,13 @@ class StaticMapLayers {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- showSingle(key,isFit = false){
|
|
|
+ showSingle(key,isFit = false,hideOther = true){
|
|
|
+ console.log('layerData', key, this.layerData,);
|
|
|
+ if(!this.layerData[key]){
|
|
|
+ return;
|
|
|
+ }
|
|
|
this.layerName = key
|
|
|
- this.hideAll()
|
|
|
+ hideOther && this.hideAll()
|
|
|
let layer = this.layerData[key].layer
|
|
|
eventBus.emit("alarmList:changeMapLayer", {legendUrl:layer.layer.get("legend"),
|
|
|
colors:layer.layer.get("colors"), labels:layer.layer.get("labels")});
|
|
|
@@ -93,22 +111,33 @@ class StaticMapLayers {
|
|
|
if(isFit && layer.layer.getExtent){
|
|
|
let extent = layer.layer.getExtent();
|
|
|
if(extent && extent[0] != Infinity){
|
|
|
- layer.mapInstance.fit(extent,{padding:[-200,-200,-200,-200]})
|
|
|
+ layer.mapInstance.fit(extent,{padding:layer.layer.get("padding") || [200,400,200,200]})
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ hideByKey(key){
|
|
|
+ let layer = this.layerData[key].layer
|
|
|
+ layer.hide()
|
|
|
+ }
|
|
|
hideAll(){
|
|
|
for(let key in this.layerData){
|
|
|
+ this.hideByKey(key)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ removeLayers(map){
|
|
|
+ for(let key in this.layerData){
|
|
|
let layer = this.layerData[key].layer
|
|
|
- layer.hide()
|
|
|
+ map.removeLayer(layer)
|
|
|
}
|
|
|
+ this.layerData = {}
|
|
|
}
|
|
|
|
|
|
addStaticImgLayer(map, item){
|
|
|
- item["opacity"] = 0.5
|
|
|
- let imgLayer = new StaticImgLayer(item.url, item, 3, map);
|
|
|
+ if(!item["opacity"]){
|
|
|
+ item["opacity"] = 0.5
|
|
|
+ }
|
|
|
+ let imgLayer = new StaticImgLayer(item.url, item, 5, map);
|
|
|
imgLayer.hide()
|
|
|
if(item.legendData){
|
|
|
imgLayer.layer.set("colors", item.legendData.colors)
|
|
|
@@ -134,7 +163,7 @@ class StaticMapLayers {
|
|
|
let color = getColorByVal(val, item.legendData)
|
|
|
let fillColor = color
|
|
|
let strokeColor = color
|
|
|
- style = that.vectorStyle.getPolygonStyle(fillColor, strokeColor, 1)
|
|
|
+ style = that.vectorStyle.getPolygonStyle(fillColor, "#000000", 1)
|
|
|
that.cacheStyle[cacheKey] = style
|
|
|
}
|
|
|
return style
|