import clone from "clone"; import { SkRealPromise } from "../../../../models/_/real"; import { parseGeoJSON } from "../../../../utils/tools"; import { InfoPopNames } from "../../InfoPops"; import BaseLayer from "./baselayer"; const SourceName = '实时水库q2'; const ShapeStyle = { id: SourceName, type: 'symbol', source: SourceName, layout: { 'icon-allow-overlap': true, 'text-allow-overlap': true, 'icon-image': '水库-超汛限', 'icon-size': [ 'interpolate', ['linear'], ['zoom'], 10, 0.5, 14, 0.5, ], 'text-allow-overlap': true, 'text-size': [ 'interpolate', ['linear'], ['zoom'], 10, 10, 14, 14, ], 'text-font': ['Roboto Black'], 'text-field': [ 'step', ['zoom'], '', 12, ['get', 'stnm'] ], 'text-anchor': 'top', 'text-offset': [0, 1], 'visibility': 'none', }, paint: { 'text-color': '#fff' } }; export default class RealSkLayerQ2 extends BaseLayer { static LayerName = 'RealSkLayerQ2'; static SourceName = SourceName; getStyle() { const ret = clone(ShapeStyle); this._setStyleVisibility(ret); return ret; } getName() { return RealSkLayerQ2.LayerName; } getSubLayers() { return [ShapeStyle.id]; } getRefreshInterval() { return 60 * 1000; } async doRefreshLayer(mapCtrl) { const ms = mapCtrl.getSource(SourceName); let data = [{ "stcd": "61614200", "type": "sk", "hasRz": true, "stnm": "浮桥河水库", "adcd": "421181100000", "wscd": null, "importancy": 0, "lgtd": 114.88069, "lttd": 31.171967, "elev": 0, "damel": 71.33, "dsflz": 68.04, "fsltdz": 64.89, "ddz": 51.78, "zcxsw": 64.89, "jhhsw":68.7, "drpTm": "2025-06-06T22:00:00.000Z", "today": 4, "h1": 4, "h3": 4, "h6": 4, "h12": 4, "h24": 4, "h48": 4, "drpState": 2, "rz": 65.7, "w": 45490, "xs":32133, "a_fsltdz": -4.189999999999998, "rzTm": "2025-06-06T22:00:00.000Z", "rzWarning": 1, "rzState": 2, "layer": "RealSkLayer", "layerPop": "RealSkPop" }]; if (Array.isArray(data)) { data.forEach(o => { const strarz = o.rz - o.fsltdz; if (!isNaN(strarz)) { o.strarz = strarz.toFixed(2); } }); } ms.setData(parseGeoJSON(data)); return true; } getFeatureTip(record) { return record.stnm; } featureClicked(properties, dispatch) { if (properties.stnm === '小玉潭水库') { /* dispatch.runtime.setInfoDlg({ layerId: 'Three', properties: properties }); */ window.open('http://www.baidu.com') } else { dispatch.runtime.setFeaturePop({ type: InfoPopNames.RealSkPop, properties, coordinates: [properties.lgtd, properties.lttd], offsetPop: true, }); } } }