《Leaflet 基础知识点》- 天地图添加、删除和透明度设置

目录

一. 地图容器初始化

二. 添加

矢量 + 注记

影像 + 注记

EPSG 3857 与 4326 差异

三. 删除

四. 透明度


一. 地图容器初始化

let map = L.map('map', {
    //参考坐标系
    crs: L.CRS.EPSG4326,
    // 中心点(这里是武汉)
    center: [30.59, 114.32],
    //最小显示等级
    minZoom: 1,
    //最大显示等级
    maxZoom: 18,
    //当前显示等级
    zoom: 10,
    //不添加属性说明控件
    attributionControl: false,
    //限制显示地理范围
    maxBounds: L.latLngBounds(L.latLng(-180, -180), L.latLng(180, 180)),
});

知识点

1. 第 3 行代码,设置的 crs (坐标参考系) 是 EPSG 43626,默认是 EPSG 3857。

二. 添加

矢量 + 注记

function addLayer() {
    // 矢量图+注记
    let mapTypes = ['vec_c', 'cva_c'];  
    // 天地图 token
    let tdtToken = '你的天地图 token';
    let layers = [];
    for(let i = 0, len = mapTypes.length; i < len; i++) {
        let tdtUrl = `http://t0.tianditu.gov.cn/DataServer?T=${mapTypes[i]}&x={x}&y={y}&l={z}&tk=${tdtToken}`;
        let layer = L.tileLayer(tdtUrl, {
            zoomOffset: 1,// 注意如果是 web 墨卡托投影(EPSG:3857) 请改为 0
            noWrap: true,
            bounds: [[-90, -180], [90, 180]]
        });
        layers.push(layer);
    }
    // LayerGroup 对象
    let tdtLayerGroup = L.layerGroup(layers).addTo(map);
    // 获取地图 id,可用于获取地图对象
    let leafletId = tdtLayerGroup._leaflet_id;
}

 效果

影像 + 注记

将第 3 行代码, mapTypes 属性换成如下参数即可

// 影像图+注记
let mapTypes = ['img_c', 'cia_c']; 

 效果

EPSG 3857 与 4326 差异

1. 天地图 地图 API 地址;

2. CRS 坐标参考系为 3857 时使用球面墨卡托(Web墨卡托)投影 _w 后缀,为 4326 时使用经纬度(地理)投影 _c 后缀;

3. 注意 第 10 行代码,CRS 坐标参考系为 3857 时属性 zoomOffset为 0,4326 时为 1;

对比效果如下,4326 比 3857 更匾一点。具体原因不再此说明了 

三. 删除

小技巧:这里多了一步,真正的项目开发中,用 leafletId 获取地图对象,可节约内存。

function removeLayer() {
    // 通过 id 获取地图对象
    let tdtLayerGroup = map._layers[leafletId];
    map.removeLayer(layer);
}

四. 透明度

function setLayerAlpha(num) {
    // 模型对象
    let tdtLayerGroup = map._layers[leafletId];
    // 图层列表
    let layerVals = Object.values(tdtLayerGroup._layers);
    // 循环设置透明度
    layerVals.forEach((layer) => {
        layer.setOpacity(num);
    });
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值