Newer
Older
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({
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;
}