We're a paying customer for the Blazor software components under AVEVA.
We need to do a substantial amount of custom real-time drawing on top of a Blazor based map control using a layer rendered on top of the Tile Layer. The currently supported Map layers are somewhat specific to smaller map indicators and static overlays.
Our rendering subsystem doing this drawing will be using SkiaSharp/Skia on WebAssembly, drawing on a Skiasharp canvas in the browser (this already works). I'm assuming behind the scenes the Map is drawing with a standard HTML canvas.
I believe we need a solution which resembles the following:
- The Image is a layer rendered on top of the map viewport (as opposed to the entire map canvas)
- The Image layer can know the size of the ViewPort so it can create an identical size image (or perhaps this is handled automatically by the Map control)
- The Image layer can be re-rendered as often as the customer code desires (we're showing realtime data on top of maps, so we will want to re-render the Image layer say every 250ms.
- When the map viewport changes (pan, zoom, etc.), events are fired so the Image layer customer code can re-render the image based on the new viewport coordinates and zoom level.
- Click events are passed through the Image Layer for processing.
Since we're using a different rendering technology than the underlying map control, my assumption is the best way to keep this simple is our code draws to a SkiaSharp canvas then converts that to PNG/BMP/whatever so that can be injected into the Image layer for rendering.
It would be expected that every pan/zoom/viewport change causes an entire re-rendering of the Image layer.