Как я могу нарисовать карты геоджонов на сетке используя холст? - PullRequest
1 голос
/ 28 мая 2019

Я уже знаю, как рисовать карту на листовом слое листов, но я пытаюсь добиться большей эффективности, поэтому сейчас я тренируюсь с холстом листов, но результат не был ожидаемым. Я понятия не имею, каксделай это, надеюсь, кто-нибудь может мне помочь!Спасибо!

Вот мой код ниже:

var tiles = new L.GridLayer();
        tiles.createTile = function (coords) {
            var tile = L.DomUtil.create('canvas', 'leaflet-tile');
            var ctx = tile.getContext('2d');
            var size = this.getTileSize()
            tile.width = size.x
            tile.height = size.y
            console.log(size.x);
            // 将切片号乘以切片分辨率,默认为256pixel,得到切片左上角的绝对像素坐标
            var nwPoint = coords.scaleBy(size)
            // 根据绝对像素坐标,以及缩放层级,反投影得到其经纬度
            var nw = map.unproject(nwPoint, coords.z)
            //从该切片左上角开始画,画一个切片大小的无填充矩形
            ctx.strokeRect(nwPoint.x, nwPoint.y, size.x, size.y)

            ctx.fillStyle = 'black';
            //x,y,z显示
            ctx.fillText('x: ' + coords.x + ', y: ' + coords.y + ', zoom: ' + coords.z, 50, 60);
            //经纬度坐标
            if(nw.lng<121 && nw.lng>119){

                ctx.fillText('lat: ' + nw.lat + ', lon: ' + nw.lng, 50, 80);
            }
            console.log(nw);
            //线的颜色
            ctx.strokeStyle = 'black';
            //这是canvans的方法
            ctx.beginPath();
            ctx.moveTo(0, 0);
            ctx.lineTo(size.x - 1, 0);
            ctx.lineTo(size.x - 1, size.y - 1);
            ctx.lineTo(0, size.y - 1);
            ctx.closePath();
            ctx.stroke();
            // // 
            for (i in da.paths) {//svg casnvas
                //console.log(da.paths[i].path);
                context = da.paths[i].path;
                p = new Path2D(context);
                // console.log(p);
                ctx.stroke(p);
                ctx.fill(p);
                ctx.fillStyle = 'lightpink';
            }

            return tile;
        }
        tiles.addTo(map)

Примерно так:

enter image description here

Я действительно надеюсь, что моя карта сможетпоместите базовую карту, например, так:

enter image description here

Это только концептуальная карта, спасибо!

...