自学内容网 自学内容网

vue + leaflet + 天地图实现搜索省份后高亮

实现省份高亮方法最重要的代码在于 L.geoJSON(district).addTo(map)这个方法,district为参数,可以在页面中引入当前省份的坐标json。

获取省份json文件的地址:https://datav.aliyun.com/portal/school/atlas/area_selector

import beijing from '../json/beijing.js';


//! 1. 每次先调用 clearLayers 清除所有图层
//! 2. 完了之后在使用 titleLayer 设置图层对象, addTo添加到地图当中

export const setLayer = (map, layerObject, district) => {
    clearLayers(map);
    const { spherical, mapLabel } = layerObject;
    let layer = L.tileLayer(spherical, {
        subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],//8个子域可用
        maxZoom: 18,//最大缩放
        minZoom: 1,//最小缩放
    });
    layer.addTo(map);//添加图层

    //实现省份高亮方法
    L.geoJSON(district).addTo(map);
    // L.geoJSON(beijing).addTo(map);
    // L.geoJSON(hebei).addTo(map);

    //! 有些地图图层类型,可能没有 label 标注 这里判断
    if (!mapLabel || Object.keys(mapLabel).length === 0) {
        return;
    }
    const { spherical: sphericalLabel } = mapLabel;
    let layerLabel = L.tileLayer(sphericalLabel, {
        subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
        maxZoom: 18,
        minZoom: 1
    });
    layerLabel.addTo(map);

    // 创建marker聚合层
    const markers = L.markerClusterGroup();//创建一个新的聚合标记组 (markers),用于将多个标记聚合在一起显示。
    // 创建一个自定义的LayerGroup来控制层级
    const layerGroup = L.layerGroup([markers]);
    layerGroup.addTo(map);
    // 设置层级,注意这个方法会将图层在地图中移到指定位置
    layerGroup.setZIndex(9999999999999999999999); // 设置图层的层级
    // 将markers保存到map对象上,以便后续使用
    map.markers = markers;
    map.layerGroup = layerGroup;
}


原文地址:https://blog.csdn.net/ni15534789894/article/details/142355441

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!