open-pioneer / trails-openlayers-base-packages

Common OpenLayers packages for the Open Pioneer Trails client framework.
Apache License 2.0
8 stars 6 forks source link

Create Type for OpenLayers layer #304

Open mbeckem opened 5 months ago

mbeckem commented 5 months ago

Open Layers layer do not have a "type" attribute and thus it is not easily possible to check a layers type.

To simplify the layer type check, a new type (e.g. "WellKnownOlLayer") could be introduced. This type would represent all LayerTypes that are known to the Trails base packages.

Additionally, a helper function for getting a layers type should be introduced.

Example:

type WellKnownLayer = { "type": "group", layer: LayerGroup } | { "type": "image"; layer: ImageLayer } | { type: "unknown"; layer: OlBaseLayer };

function getWellKnownLayer(layer: OlBaseLayer): WellKnownLayer { 
  if (layer instanceof LayerGroup) { 
    return { type: "group"; layer };
  }
  // ... more checks
  return { type: "unknown"; layer };
}

(Maybe also think about introducing a type for Open Layer sources.)