geoserver 发布矢量切片服务,并使用leaflet 加载

1.服务发布

(1)geoserver 连接mySql数据库:
下载插件:http://geoserver.org/release/2.14.5/;
现在mySql 支持的插件,以及矢量切片插件

在这里插入图片描述
插件解压放到:geoserver安装目录\webapps\geoserver\WEB-INF\lib下;
(2)连接数据库
在这里插入图片描述
(3)数据发布。连接成功后,选择 图层–添加新的资源–选择数据源–找到数据–发布
在这里插入图片描述
填写基本参数,name,坐标系等,注意:数据需要有geometry(几何) 字段。
例如:update lane set shape= geomfromtext(‘point(108.9465236664 34.2598766768)’)
在这里插入图片描述
勾选矢量切片格式,及坐标系
在这里插入图片描述在这里插入图片描述
“保存”后,找到矢量切片地址:
单击geoserver图标–TMS
在这里插入图片描述
在这里插入图片描述

2.leaflet 加载矢量切片

leaflet 矢量切片 插件下载
在这里插入图片描述
本文以Leaflet.VectorGrid为例,其他方式读者自行尝试
关键代码如下:

function vectorGridLayer(url, options) {
            let layerOptions = options || {};
            let vectorTileLayerStyles = {};
            layerOptions.renderFactory = layerOptions.renderFactory ? layerOptions.renderFactory : L.svg.tile;
            vectorTileLayerStyles[layerOptions.layerName] = options.vectorTileLayerStyles;
            layerOptions.vectorTileLayerStyles = vectorTileLayerStyles;
            let layer = L.vectorGrid.protobuf(url, layerOptions);
            return {
                layer: layer
            };
        };

    function getVectorTileLayer(){
            let url = 'http://127.0.0.1:8080/geoserver/gwc/service/tms/1.0.0/cite%3Alane_info@3857@pbf/{z}/{x}/{-y}.pbf';
            let localVectorTileOptions = {
                renderFactory: L.canvas.tile,
                layerName: 'lane_info',
                vectorTileLayerStyles: function (feature, zoom) {
                    let weight = 0;
                    let roadclass = feature.nroadclass;
                    //根据地图等级设置显示的矢量数据
                    if (zoom <= 13) {
                        if (roadclass == '41000' || roadclass == '42000' || roadclass == '43000') {
                            weight = 1;
                        } else {
                            weight = 0;
                        }
                    } else if (zoom < 17 && zoom > 13) {
                        if (roadclass == '41000' || roadclass == '42000' || roadclass == '43000' || roadclass == '44000') {
                            weight = 2;
                        } else {
                            weight = 0;
                        }
                    } else {
                        weight = 2;
                    }
                    //根据属性设置颜色
                    let color = feature.color;
                    let lineColor = '';
                    if (color == '1') {
                        lineColor = '#34b000';
                    } else if (color == '2') {
                        lineColor = '#fecb00';
                    } else if (color == '3') {
                        lineColor = '#df0100';
                    } else {
                        lineColor = '#8e0e0b';
                    }
                    return {
                        weight: weight,
                        color: lineColor || '#34b000'
                    };
                }
            };
            let vectorGridLayer = vectorGridLayer(url, localVectorTileOptions);
            return vectorGridLayer;
    }

    let vectorTileLayer=getVectorTileLayer();
    map.addLayer(vectorTileLayer);
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值