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"
  >
    <div class="control-container">
      <button @click.stop="switchInfoWindow">
        {{ visible ? '关闭' : '开启' }}窗口
      </button>
    </div>
    <tlbs-heat
      ref="heatRef"
      :data="heatData"
      :max="350"
      :min="0"
      :height="0"
      :radius="30"
      :gradient-color="gradientColor"
      :options="options"
    />
    <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: 'HeatDemo',
  setup() {
    const mapRef = ref(null);
    const heatRef = ref(null);
    const center = ref({ lat: 39.909897147274364, lng: 116.39756310116866 });
    const zoom = ref(11);
    const heatData = ref([]);
    const visible = ref(true);
    const onClick = (e: Event) => {
      console.log(e);
    };

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

    const switchInfoWindow = () => {
      visible.value = !visible.value;
    };

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

    const getLayerInstance = () => {
      // 可以获取热力图实例,调用热力图实例方法
      console.log(heatRef.value.heat);
    };

    return {
      visible,
      center,
      zoom,
      onClick,
      control: {
        scale: {},
        zoom: {
          position: 'topRight',
        },
      },
      mapRef,
      heatRef,
      // @ts-ignore
      heatData,
      gradientColor: {
        stops: {
          0.6: '#673198',
          0.8: '#e53390',
          0.9: '#ffc95a',
        },
      },
      options: {
        minZoom: 10,
        // maxZoom: 15,
      },
      switchInfoWindow,
      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类型参考官网文档
radiusNumber最大辐射半径,默认为50,参考官网文档
heightNumber峰值高度,默认为100,参考官网文档
opacityNumber全局透明度,取值范围[0,1],默认为0.8,参考官网文档
minNumber热力最弱阈值,小于该值的不显示,默认为0,参考官网文档
maxNumber热力最强阈值,大于该值的显示为最强色,默认为数据中的最大值,参考官网文档
gradientColorTMap.visualization.GradientColor渐变颜色,渐变方向由GradientColor对象的angle属性决定,其中渐变色断点集合需符合GradientColor对象规范,参考官网文档
optionsTMap.visualization.HeatOptions除了上述属性的其他配置参数,TMap.visualization.HeatOptions

TMap.visualization.HeatOptions

热力图配置参数。

属性名称类型说明
enableAggregationBoolean是否启用自动聚合预处理,适用于万级数据量,启用后可优化运行时性能,但对数据分布略有影响。默认为false。
enableLightingBoolean热力图是否呈现光照效果,默认为false。
transitAnimationAnimationOptions热力图数据源切换过渡动画配置参数,不配置则无过渡动画。支持animationType为‘mix’渐变一种类型,默认animationType为‘mix’渐变。
toggleAnimationAnimationOptions开关动画配置参数,不配置则无开关动画效果。支持animationType为‘fade’淡入淡出一种类型,默认animationType为‘fade’淡入淡出。
zIndexNumber图层绘制顺序。
minZoomNumber图层最小缩放层级,当地图缩放层级小于该值时该图层不显示,默认为3。
maxZoomNumber图层最大缩放层级,当地图缩放层级大于该值时该图层不显示,默认为20。
offsetNumber图层底部离地高度,默认为0。
distanceUnitStringradius(半径)、height(峰值高度)、offset(离地高度)三个参数的单位,支持'pixel' 像素、'meter' 米,默认为'pixel'。
enableHeatDotBoolean热力图是否开启自动切换散点图效果,默认为false。
heatDotOptionsHeatDotOptions自动切换散点图相关配置参数。

组件实例属性

名称类型说明
heatTMap.visualization.Heat热力图层实例。实例方法参考TMap.visualization.Heat方法

TMap.visualization.Heat方法

方法返回值说明
setMin(min:Number)this设置热力最弱阈值,小于该值的不显示,默认为0。
getMin()Number获取热力最弱阈值。
setMax(max:Number)this设置热力最强阈值,大于该值的显示为最强色,默认为数据中的最大值。
getMax()Number获取热力最强阈值。
setRadius(radius: Number)this设置热力图辐射半径。
getRadius()Number获取热力图辐射半径。
setGradientColor(gradientColor: GradientColor)this设置热力图渐变颜色。
getGradientColor()GradientColor获取热力图渐变颜色。
setHeight(height: Number)this设置热力图高度。
getHeight()Number获取热力图高度。
setOpacity(opacity: Number)this设置热力图透明度。
getOpacity()Number获取热力图透明度。
setThreshold(min:Number, max:Number)this设置热力阈值范围。
setData(dataList:HeatPoint[] )this设置数据。
getData()HeatPoint[]获取数据。
setZIndex(zIndex: Number)this设置图层绘制顺序。
getZIndex()Number获取图层绘制顺序。
setMinZoom(minZoom: Number)this设置图层最小缩放层级,当地图缩放层级小于该值时该图层不显示。
getMinZoom()Number获取图层最小缩放层级。
setMaxZoom(maxZoom: Number)this设置图层最大缩放层级,当地图缩放层级大于该值时该图层不显示。
getMaxZoom()Number获取图层最大缩放层级。
setOffset(offset: Number)this设置图层底部离地高度。
getOffset()Number获取图层底部离地高度。
addTo(map:Map )this添加至指定地图实例。
updateAnimation(type:String, animationOptions:AnimationOptions )this更新指定类别动画参数,type支持'toggle','transit'两种。
getAnimation(type:String)AnimationOptions获取指定类别动画参数,type支持'toggle','transit'两种。
setHeatDotEnable(enable: Boolean)this设置是否开启自动切换散点图功能
getHeatDotEnable()Boolean获取是否开启自动切换散点图状态
setHeatDotOptions(heatDotOptions: HeatDotOptions)this设置自动切换散点图相关配置
getHeatDotOptions()HeatDotOptions获取自动切换散点图相关配置
show()this显示图层。
hide()this隐藏图层。
remove()this从地图中删除图层。
destroy()this销毁图层对象。