Refactoring types

This commit is contained in:
Willem Dantuma
2021-10-05 13:46:10 +02:00
parent 4ef077f8d7
commit 160eb10aba
31 changed files with 118 additions and 102 deletions

View File

@@ -10,12 +10,14 @@ import * as proj from 'ol/proj';
import * as loadingstrategy from 'ol/loadingstrategy';
import * as style from 'ol/style';
import {Tile,Layer,Image} from 'ol/layer';
import {XYZ,ImageStatic,OSM,BingMaps,TileWMS,TileArcGISRest,TileJSON} from 'ol/source';
import {XYZ,ImageStatic,OSM,BingMaps,TileWMS,TileArcGISRest,TileJSON,Source} from 'ol/source';
import {Vector as VectorSource} from 'ol/source';
import { Vector as VectorLayer } from 'ol/layer';
import VectorTileSource from 'ol/source/VectorTile';
import VectorTileLayer from 'ol/layer/VectorTile';
import {GeoJSON,MVT} from 'ol/format';
import { Geometry } from 'ol/geom';
import TileSource from 'ol/source/Tile';
@Component({
selector: 'fm-map-item-layers',
@@ -34,7 +36,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
private initialized:boolean = false;
private mapEventHandlerInstalled = false;
private selectedFeatures = {};
private selectionLayer:Layer = null;
private selectionLayer:Layer<Source> = null;
constructor(private itemService: ItemService, private map: MapComponent, public appConfig: AppConfig) {
super(map);
@@ -119,9 +121,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
return this.styleCache[key];
}
createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer {
createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
var layerIndex = -1;
var layer: Layer = null;
var layer: Layer<Source> = null;
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
let source = new XYZ({ maxZoom: 19, minZoom: 1, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
layer = new Tile({ source: source });
@@ -142,9 +144,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
return layer;
}
createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer {
createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
var layerIndex = -1;
var layer: Layer = null;
var layer: Layer<Source> = null;
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
var data = item.data;
var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
@@ -177,7 +179,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
let source = new VectorSource({
strategy: loadingstrategy.bbox,
loader: function (extent: Extent, resolution: number, projection: Projection) {
var source = this as VectorSource;
var source = this as VectorSource<Geometry>;
__this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) {
var features = format.readFeatures(data);
for (let f of features) {
@@ -230,16 +232,16 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
return layer;
}
createSelectionLayer(itemLayer:IItemLayer):Layer {
createSelectionLayer(itemLayer:IItemLayer):Layer<Source> {
var layerIndex = -1;
var layer: Layer = null;
var layer: Layer<Source> = null;
layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : itemLayer.item.data.layers[0].index;
var data = itemLayer.item.data;
var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
return new VectorTileLayer({
renderMode: 'vector',
source: itemLayer.layer.getSource(),
source: (itemLayer.layer as VectorTileLayer).getSource(),
style: (feature) => {
if (feature.getId() in this.selectedFeatures) {
@@ -260,9 +262,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
return null;
}
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer {
createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
let data = item.data as ILayerData;
var layer: Layer = null;
var layer: Layer<Source> = null;
switch (data.interfaceType) {
case 'OSM': {
let source = new OSM();
@@ -312,8 +314,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
return layer;
}
createLayer(itemLayer: IItemLayer): Layer {
var layer: Layer = null;
createLayer(itemLayer: IItemLayer): Layer<Source> {
var layer: Layer<Source> = null;
var layerIndex = -1;
if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.geotiff.processed') {
layer = this.createGeotiffLayer(itemLayer.item,itemLayer);
@@ -360,7 +362,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
}
}
addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer {
addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer<Source> {
if(!itemLayer) return null;
var olLayers = this.instance.getLayers();
var layer = itemLayer.layer;
@@ -385,7 +387,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
}
updateLayers(itemLayers: IItemLayer[]) {
let newLayers: IItemLayer[] = [];
let newLayers: Layer<Source>[] = [];
if (itemLayers) {
itemLayers.forEach((itemLayer, index) => {
if(itemLayer.item.itemType == 'vnd.farmmaps.itemtype.temporal') {