如何从 tileLayer Leaflet 1.0 获取画布

Mac*_*cik 1 html javascript canvas leaflet

我正在使用Leaflet.VectorGrid 插件在 Leaflet 1.0 中绘制通过 geojson-vt 切片的切片。

我想在绘图时为路径添加渐变。我在stackoverflow上找到了沿路径添加渐变的代码,但它需要一个画布。

我的问题是:如何获得对画布或其上下文 ( ctx)的引用以在其上绘制?

这是我添加 tileLayer 的代码:

var tileLayer = L.vectorGrid.slicer(data, {
        rendererFactory: L.canvas.tilee,
        vectorTileLayerStyles: {
            sliced: function(properties, zoom) {                    
                var endColor=70;       

                // var grad = ctx.createLinearGradient(begin[0], begin[1], end[0], end[1]);
                // grad.addColorStop(0, begin[2]);
                // grad.addColorStop(1, end[2]);
                // ctx.strokeStyle = grad;

                return {                        
                    stroke: true,
                    fill: true,
                    color: endColor < 20? 'red' :
                            endColor < 50? 'orange' :
                            endColor < 70? 'yellow' :
                            endColor < 100? 'green' : 'blue',/
                    weight: 5,
                }
            }
        }

    });
Run Code Online (Sandbox Code Playgroud)

Iva*_*hez 5

我是 Leaflet.VectorGrid 的创建者。

我的问题是:如何获得对画布或其上下文(ctx)的引用以在其上绘制?

答案是:你没有。Leaflet 代码的结构方式将画布上下文抽象化。这种设计的目标是让用户专注于几何图形而不是渲染,并通过双 SVG 支持提供交叉兼容性。不鼓励使用仅 SVG 或仅画布的功能。

此外, Leaflet.VectorGrid 中的画布继承自L.Canvas. 需要注意的是香草L.Canvas没有对沿线梯度的支持,所以你应该专注于使用插件,允许对折线梯度,然后才担心如何使矢量砖的工作。

这将涉及了解两个插件如何对 Leaflet 类进行猴子补丁,按什么顺序,以及如何处理类继承。

一旦你理解了这一点,你将不得不担心L.HotlineL.GeoJSON切片中实例化的s 中实例化 s。

TL;DR:阅读并理解 Leaflet.VectorGrid 和 Leaflet.Hotline 的代码。