async void showPbf(string path, string stylePath, double zoom, double size = 512, double scale = 1)
        {
            var watch = System.Diagnostics.Stopwatch.StartNew();

            // load style and font
            var style = new VectorTileRenderer.Style(stylePath);

            style.FontFallbackDirectory = mainDir + @"styles/fonts/";

            // set pbf as tile provider
            var provider = new VectorTileRenderer.Sources.PbfTileSource(path);

            style.SetSourceProvider(0, provider);

            // render it on a skia canvas
            var canvas  = new SkiaCanvas();
            var bitmapR = await Renderer.Render(style, canvas, 0, 0, zoom, size, size, scale);

            demoImage.Source = bitmapR;

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine(elapsedMs + "ms time");
        }
        async void zurichMbTilesHybridStyle()
        {
            var watch = System.Diagnostics.Stopwatch.StartNew();

            // load style and font
            var style = new VectorTileRenderer.Style(mainDir + @"styles/hybrid-style.json");

            style.FontFallbackDirectory = mainDir + @"styles/fonts/";

            // set pbf as tile provider
            var vectorProvider = new VectorTileRenderer.Sources.PbfTileSource(mainDir + @"tiles/zurich.pbf.gz");

            style.SetSourceProvider(0, vectorProvider);

            // load raster source
            var rasterProvider = new VectorTileRenderer.Sources.RasterTileSource(mainDir + @"tiles/zurich.jpg");

            style.SetSourceProvider("satellite", rasterProvider);

            // render it on a skia canvas
            var canvas  = new SkiaCanvas();
            var bitmapR = await Renderer.Render(style, canvas, 0, 0, 14, 256, 256, 1);

            demoImage.Source = bitmapR;

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine(elapsedMs + "ms time");
        }