Skip to content

聚簇图层 ​

此功能案例实现聚簇图层功能

目录 ​

1. 功能点 ​

  • 添加地图数据 addPointData
  • 添加聚簇图层 addAggLandmarkLayer
  • 更新聚簇图层样式 updateAggLandmarkLayerStyle
  • 删除聚簇图层 removeOverlay

返回本章目录

2. 视频演示 ​

返回本章目录

3. 核心代码 ​

引入版本:3.2 起支持

第一步 ​

添加点数据

JavaScript
// 添加聚簇图点数据
async function addPointData() {
    // 获取数据
    let res = await axios.get('/data/point.json')
    let data = res.data.RECORDS.map((item) => {
        return {
            id: 'landmarkId' + item.id,          // 数据子对象 id,新建时调用者自己传入的唯一标识,用于各种操作的对象识别
            label: '',                           // 图标标签文本
            value: 10,                           // 点的值
            coord: [item.lon - 0, item.lat - 0], // XY 轴坐标,X:经度;Y:纬度
            coordZ: 65,                          // Z 轴高度(单位:米)
            year: item.year
        }
    })
    // 添加图层数据
    window.appInstance.uniCall(
        'addPointData',
        {
            id: 'idPointData1',  // 数据 id,新建时调用者自己传入的唯一标识,用于各种操作的对象识别
            attribute: ['year'], // 扩展属性,基于data中除了id、label、coord、coordZ、value之外的扩展,不能多余10个扩展属性
            data: data,
        },
        (res) => {
            console.log('添加数据', res)
        }
    )
}

第二步 ​

添加聚合地标图

JavaScript
// 添加聚簇图
function addAggLandmarkLayer() {
    window.appInstance.uniCall(
        'addAggLandmarkLayer',
        {
            id: 'AggLayer',                   // 图层对象 id,新建时调用者自己传入的唯一标识,用于各种操作的对象识别
            name: 'layerName',                // 图层名称,支持为图层自定义名称
            coordZ: 0,                        // 聚合结果图层的显示 Z 轴高度(单位:米)
            coordTypeZ: 0,                   // Z 轴坐标类别,0:相对 3D 世界 0 海拔;1:相对 3D 世界地表;2:相对 3D 模型表面(单位:米)
            aggType: 0,                       // 聚簇方法:0-就近聚合 ,1-行政区划聚合, 2-栅格聚簇
            aggRadius: 600,                   // 将点就近聚簇的范围半径(单位:像素)
            aggMaxMapLevel: 17,
            iconName: 'camera',               // 最近距离点图标的样式
            iconScale: 1,                     // 最近距离点图标大小,默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
            labelScale: 1,                    //最近距离点文字标牌大小,默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
            drawMax: 1000,                    // 最近距离点的绘制最大数量
            minViewDistance: 0,               // 点图标最小可见距离,(单位:米)
            maxViewDistance: 200000,          // 点图标最大可见距离,(单位:米)
            visible: true,
            aggDataId: 'idPointData1',        // 对应本服务器上的聚合数据 id
            clusters: [
                {
                    value_range_min: 2,       // 聚簇结果范围最小值(包含)
                    value_range_max: 100,     // 聚簇结果范围最大值(包含)
                    clustersIcon: 'circle01', // 图标类型,根据内置枚举选择
                    size: 40                  // 图标大小
                },
                {
                    value_range_min: 101,
                    value_range_max: 500,
                    clustersIcon: 'circle03',
                    size: 50
                },
                {
                    value_range_min: 501,
                    value_range_max: 1000,
                    clustersIcon: 'circle02',
                    size: 80
                } 
            ]
        },
        (res) => {
            console.log('添加聚簇图', res)
        }
    )
}

返回本章目录

第三步 ​

更新聚簇图层样式

JavaScript
// 更新聚簇图
function updateAggLandmarkLayerStyle() {
    window.appInstance.uniCall(
        'updateAggLandmarkLayerStyle',
      {   
        id: "idLayer",// 图层对象 id,新建时调用者自己传入的唯一标识,用于各种操作的对象识别
        iconName:"camera",// 图层名称,支持为图层自定义名称
        iconScale: 1,// 最近距离点图标大小,默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
        labelScale: 1,// 最近距离点文字标牌大小,默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
        legends: [// 最近距离点图层包含的图例,支持为不同图例定义各自样式
        {
            name: "太阳能",// 最近距离点图层内图例名称,需要和attribute的值一致
            color: "#ff0000",// 颜色(HEX 颜色值)
            iconName: "camera",
            iconScale: 1,// 默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
            labelScale: 1// 默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
        },
        {
            name: "节能灯",// 最近距离点图层内图例名称,需要和attribute的值一致
            color: "#ff0000",// 颜色(HEX 颜色值)
            iconName: "camera",
            iconScale: 1,// 默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
            labelScale: 1// 默认值是1表示原大,0 - 1:表示缩小倍率,大于1:表示放大倍率
        }
    ],
        legendAttr: "model",// 对应data中attribute的字段名称,如果找到有这个属性,会按照data中这个attribute的value找对应的legends,如果有则按照样式显示,如果没有,按照默认iconName显示
        clusters: [
        {
            value_range_min:2,// 聚簇结果范围最小值(包含)
            value_range_max:100,// 聚簇结果范围最大值(包含)
            clustersIcon: "ball1",// 图标类型,根据内置枚举选择
            size: 30// 图标大小
        },
        {
            value_range_min:101,// 聚簇结果范围最小值(包含)
            value_range_max:500,// 聚簇结果范围最大值(包含)
            clustersIcon: "ball2",// 图标类型,根据内置枚举选择
            size: 30// 图标大小
        },
        {
            value_range_min:501,// 聚簇结果范围最小值(包含)
            value_range_max:1000,// 聚簇结果范围最大值(包含)
            clustersIcon: "ball3",// 图标类型,根据内置枚举选择
            size: 30// 图标大小
        }
    ]
}

        (res) => {
            console.log('更新聚簇图', res)
        }
    )
}

返回本章目录

第四步 ​

删除聚簇图层

JavaScript
// 删除聚簇图层
function removeOverlay() {
    window.appInstance.uniCall(
        'removeOverlay',
     {
        id: 'idLayer', 
        overlayType: 'aggLandmarkLayer',
     };
        (res) => {
            console.log('删除聚簇图', res)
        }
    )
}

返回本章目录

4. 代码下载 ​

点击跳转到下载页面

返回本章目录