Skip to content

网格热力图

地图网格热力图组件,网格热力图将离散的数据点以正方形网格区域进行聚合,根据落入区域内的数据点数量渲染不同颜色的高度的正方形棱柱。

基础示例

vue
<template>
  <tlbs-map
    ref="mapRef"
    api-key="OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"
    :center="center"
    :zoom="zoom"
    :control="control"
    @click="onClick"
    @map_inited="onMapInited"
  >
    <tlbs-grid
      ref="gridRef"
      :data="heatData"
      :extrudable="true"
      :side-length="1000"
      :height-range="[1, 1000]"
      :show-range="[1, 100]"
      :color-lis="['#ea9c21', '#ea8e21', '#e6721c', '#e55f1d', '#cc2a18']"
      :options="options"
      :select-options="selectOptions"
    />
    <div class="control-container">
      <button @click.stop="getLayerInstance">
        打印网格图实例
      </button>
    </div>
  </tlbs-map>
</template>

<script lang="ts">
import { defineComponent, ref, onMounted } from 'vue-demi';

export default defineComponent({
  name: 'GridDemo',
  setup() {
    const mapRef = ref(null);
    const gridRef = ref(null);
    const center = ref({ lat: 39.909897147274364, lng: 116.39756310116866 });
    const zoom = ref(11);
    const heatData = ref([]);
    const onClick = (e: Event) => {
      console.log(e);
    };

    onMounted(async () => {
      await loadHeatData();
      heatData.value = (window as any).heatData || [];
    });

    const onMapInited = () => {
      // 地图加载完成后,可以获取地图实例、网格图实例,调用地图实例、网格图实例方法
      console.log(mapRef.value.map);
      console.log(gridRef.value.grid);
    };

    const getLayerInstance = () => {
      // 可以获取网格图实例,调用网格图实例方法
      console.log(gridRef.value.grid);
    };

    return {
      center,
      zoom,
      onClick,
      control: {
        scale: {},
        zoom: {
          position: 'topRight',
        },
      },
      mapRef,
      gridRef,
      // @ts-ignore
      heatData,
      options: {
        minZoom: 5,
      },
      selectOptions: {
        action: 'click', // 拾取动作
        style: '#E9AB1D',
        enableHighlight: false, // 是否使用高亮效果
      },
      onMapInited,
      getLayerInstance,
    };
  },
});

const loadHeatData = () => new Promise((resolve) => {
  const script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'https://mapapi.qq.com/web/lbs/visualizationApi/demo/data/heat.js';
  script.addEventListener('load', () => {
    resolve('loaded');
  });
  document.body.appendChild(script);
});
</script>

props

名称类型说明
dataTMap.visualization.HeatPoint[]热力网格数据,HeatPoint类型参考官网文档
sideLengthNumber单位正方形网格边长, 单位为米, 默认1000,参考官网文档
extrudableBoolean网格是否可拔起,默认为true,参考官网文档
colorListString[]颜色层级,颜色支持rgb(), #RRGGBB格式, 默认为[’#D8AFA7’, ‘#842610’, ‘#641200’],参考官网文档
heightRangeNumber[]高度变化区间,需要传入正整数,默认为[1, 100],若extrudable为false,则不生效,参考官网文档
showRangeNumber[]网格聚合数据显示区间,需要传入正整数,区间外的数据不显示,区间内的数据线性映射到高度区间及颜色层级,参考官网文档
optionsTMap.visualization.GridOptions除了上述属性的其他配置参数,参考TMap.visualization.GridOptions

TMap.visualization.GridOptions

网格热力图配置参数。

属性名称类型说明
selectOptionsVisualSelectOptions拾取配置,可设置拾取动作、选中样式、是否使用高亮效果,其中选中样式为String类型的颜色值。
enableBloomBoolean网格热力图呈现泛光效果,默认为false。
toggleAnimationAnimationOptions开关动画配置参数,不配置则无开关动画效果。支持animationType为‘fade’淡入淡出,‘grow’生长两种类型,默认animationType为‘fade’淡入淡出。
zIndexNumber图层绘制顺序。
minZoomNumber图层最小缩放层级,当地图缩放层级小于该值时该图层不显示,默认为3。
maxZoomNumber图层最大缩放层级,当地图缩放层级大于该值时该图层不显示,默认为20。
heightScaleNumber网格热力图高度缩放系数,需要传入正数,默认为1.0。
coverageNumber网格覆盖范围比例系数,可用于调整网格间的间隙,取值范围(0, 1.0],默认为0.8

事件

名称参数说明
clickevt: TMap.VisualEvent点击网格时触发,参考官网文档
hoverevt: TMap.VisualEvent鼠标悬停目标改变时触发,若悬停在图形外部,则返回结果中的拾取对象为null,参考官网文档

组件实例属性

名称类型说明
gridTMap.visualization.Grid网格热力图层实例。实例方法参考TMap.visualization.Grid方法

TMap.visualization.Grid方法

方法返回值说明
getValueRange()Number[]获取聚合数据取值范围,[min, max]。
setShowRange(showRange:Number[])this设置聚合数据显示区间范围,[min, max]。
getShowRange()Number[]获取聚合数据显示区间范围。
setSideLength(sideLength: Number)this设置单位正方形网格边长, 单位为米, 单位为米。
getSideLength()Number获取单位正方形网格边长, 单位为米, 单位为米。
setExtrudable(extrudable: Boolean)this设置网格是否可拔起。
getExtrudable()Boolean获取网格是否可拔起。
setColorList(colorList: String[])this设置颜色层级。
getColorList()String[]获取颜色层级。
setHeightRange(heightRange: Number[])this设置高度变化区间,需要传入正整数,若extrudable为false,则不生效。
getHeightRange()Number[]获取高度变化区间。
setData(dataList:HeatPoint[])this设置数据。
getData()HeatPoint[]获取数据。
setZIndex(zIndex: Number)this设置图层绘制顺序。
getZIndex()Number获取图层绘制顺序。
setMinZoom(minZoom: Number)this设置图层最小缩放层级,当地图缩放层级小于该值时该图层不显示。
getMinZoom()Number获取图层最小缩放层级。
setMaxZoom(maxZoom: Number)this设置图层最大缩放层级,当地图缩放层级大于该值时该图层不显示。
getMaxZoom()Number获取图层最大缩放层级。
addTo(map:Map )this添加至指定地图实例。
updateAnimation(type:String, animationOptions:AnimationOptions)void更新指定类别动画参数,type支持‘toggle’。
getAnimation(type:String)AnimationOptions获取指定类型的动画参数,type支持‘toggle’。
getSelectOptions()VisualSelectOptions获取拾取配置。
setSelectOptions(selectOptions: VisualSelectOptions)this设置拾取配置。
setCoverage(coverage: Number)this设置网格覆盖范围比例系数, 取值范围(0, 1.0]
getCoverage()Number获取网格覆盖范围比例系数
show()this显示图层。
hide()this隐藏图层。
remove()this删除图层。
destroy()this销毁图层对象。