import VectorLayer from 'ol/layer/Vector'; import VectorSource from 'ol/source/Vector'; import GeoJSON from 'ol/format/GeoJSON'; import {Circle as CircleStyle, Fill, Stroke, Style, Text} from 'ol/style'; import MapProperties from './MapProperties'; export interface TemperatureSeries{ date: number; value: number; } export default class StationLayer{ public static readonly layerName: string = "StationLayer"; private layer: any; private mapProperties: MapProperties; constructor(mapProperties: MapProperties){ this.mapProperties = mapProperties; this.layer = new VectorLayer({ className: StationLayer.layerName, source: new VectorSource({ url: "http://localhost/germanStation.geojson", format: new GeoJSON(), }), style: (feature)=>{return this.stationStyle(feature)} }) } public getLayer(): any{ return this.layer; } protected stationStyle(feature){ let fontSize = 15 let label = '\u272A'; if(this.mapProperties.getZoomLevel()>=8){ label += "\n"+feature.get("id"); } return new Style({ text: new Text({ font: fontSize+'px Helvetica,bold', overflow: true, fill: new Fill({ color: 'rgba(0,0,0,1)' }), offsetY: 0, text: label }) }); } public getTemperatureSeriesFromFeature(feature: any): TemperatureSeries[]{ let series: TemperatureSeries[] = new Array<TemperatureSeries>(); console.log(feature); /* series.push({date: 2010, value: feature.get(2010)}); series.push({date: 2011, value: feature.get(2011)}); series.push({date: 2012, value: feature.get(2012)}); series.push({date: 2013, value: feature.get(2013)}); series.push({date: 2014, value: feature.get(2014)}); */ feature.getKeys().forEach(element => { if(!isNaN(element) && Number.parseInt(element)>=1800 && feature.get(element)!=null){ series.push({date: Number.parseInt(element), value: feature.get(element)}); } }); return series; } }