# qe-cluster-layer

聚散图层组件,可以用来聚散展示三维图元,且支持自定义聚散图标。


# 实例

隐藏代码
<template>

  <div style="height: 450px;">
    <qe-viewer
      :imagery-type="'AMap'"
      :fullscreen-button="true"
      :default-view="defaultView"
      @ready="getViewer"
    >
      <qe-cluster-layer :name="'测试聚散图层'" :cluster-style="'clustering'" @clusterTick="clusterTick">
        <qe-marker
          v-for="(item, index) in markers"
          :key="'marker' + index"
          :position="item.ps"
          :billboard="item.bd"
          :label="item.lb"
          :attr="item.attr"
          @click="markerEvents"
        />
      </qe-cluster-layer>
    </qe-viewer>
  </div>
</template>

<script>
import { QeViewer, QeClusterLayer, QeMarker } from '@qycloud/vue-qearth';
import 'vue2qearth/vue2qearth.css'

export default {
  components: {
    QeViewer, 
    QeClusterLayer, 
    QeMarker
  },
  data () {
    return {
      divIcons:[],
      defaultView: [
        118.7863,
        31.9087,
        801.6425,
        1.724684714172732,
        -53.783141852231246,
        0.008819224020548466
      ],
      markers: []
    };
  },
  created () {
    this.createMarkers()
    setTimeout(()=>{this.createMarkers()},2000)
  },
  methods: {
    getViewer(viewer){
      window.viewer=viewer
    },
    clusterTick(evt) {
      console.log(evt)
    },
    createMarkers () {
      for (let i = 0; i < 200; i++) {
        const ps = [
          Math.random() * 0.005 + 118.78600228,
          Math.random() * 0.005 + 31.9135434,
          0
        ]
        this.markers.push({
          ps,
          bd: {
            icon: require("../../src/assets/dataImages/locate.png")
          },
          lb: {
            text: `测试${i}`,
            direction: 'right'
          },
          attr: {
            ps,
            text: `测试${i}`
          }
        })
      }
    },
    markerEvents (evt) {
      const attr = evt.overlay.attr
      const { _lng, _lat, _alt } = evt.overlay.position
      alert(`当前数据名称为:${attr.text}`)
    }
  }
}
</script>

# Attributes

参数 说明 类型 可选值 默认值
size 聚合图形的基础尺寸 number 18
pixelRange 聚合的像素范围 number 40
fontSize 聚合图形上文字字体大小 number 12
fontColor 聚合图形上字体颜色 string black
clusterStyle 聚合图形样式,circle--圆形clustering--聚合图形custom--自定义聚散图标 string clustering
clusterCount style='custom'才起作用,不同聚散数量对应不同的聚散图标,如:聚散数量<= 20的聚散点、<= 100 && >20的聚散点、<=1000 && > 100的聚散点、> 1000聚散点 array [20, 100,1000]
clusterBillboards style='custom'才起作用,自定义clusterCount对应期间的聚散图标参数,暂支持四个范围,四个范围对应四种图标 array 参照参数说明
gradient 聚合图形的幅度颜色设置 object 参照参数说明 有默认值
isAnimation 设置点击聚散点时是否有视图移动的动画 boolean true
id 图层唯一标识 id,不设置会自动生成 string
visible 图层否可见,可以控制图层组里所有图层显示隐藏 boolean true
name 图层名称,如果为空,将不会在图层控制组件中显示 string
minZoom 图层最小层级,低于最小层级则不显示 Number 0
maxZoom 图层最大层级,超过则不显示 Number 25
zoomScale 点击聚散点,地图缩放的视角比例 Number 2
enableZoom 点击聚散点,是否出现调整视角的动画 boolean true
layerGroupOptions 图层组其他可选参数 object

# 参数说明

// 自定义聚散图标实例
{
  style: 'custom',
  clusterBillboards: [
    {
      image: require('../../assets/dataImages/cluster1.png'),
      width: 48,
      height: 48
    },
    {
      image: require('../../assets/dataImages/cluster2.png'),
      width: 48,
      height: 48
    },
    {
      image: require('../../assets/dataImages/cluster3.png'),
      width: 64,
      height: 64
    },
    {
      image: require('../../assets/dataImages/cluster3.png'),
      width: 64,
      height: 64
    }
  ]
}

// 聚合图形的幅度默认颜色设置
const gradient = {
  0.0001: '#00BFFF',
  0.001: 'green',
  0.01: 'orange',
  0.1: 'red'
}

# Events

事件的使用请参照上面ClusterLayer 实例


// 可选事件
"ready" // 组件装载后,返回当前实例对象
"clusterTick" // 点击聚散点的回调函数,返回值为:`entities--entity数组``overlays--覆盖物数组``layer--当前图层对象`
最后更新时间: 1/10/2023, 4:10:49 PM