Skip to content

散点图

地图散点图组件,散点图是用以展示海量独立数据点的可视化类型,支持圆形图形或用户自定义图标。目前支持百万级的数据点展示。

基础示例

vue

<template>
  <tlbs-map
    ref="mapRef"
    api-key="OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"
    :center="center"
    :zoom="zoom"
    :control="control"
    @map_inited="onMapInited"
  >
    <tlbs-dot
      ref="dotRef"
      :data="dotData"
      :styles="styles"
      :select-options="selectOptions"
      @click="onClick"
    />
    <div class="control-container">
      <button @click.stop="getLayerInstance">
        打印散点图实例
      </button>
    </div>
  </tlbs-map>
</template>

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

export default defineComponent({
  name: 'DotDemo',
  setup() {
    const mapRef = ref(null);
    const dotRef = ref(null);
    const center = ref({ lat: 39.984104, lng: 116.307503 });
    const zoom = ref(8);
    const dotData = ref([]);

    onMounted(async () => {
      await loadDotData();
      dotData.value = (window as any).pointData || [];
    });

    const onClick = (e: TMap.visualization.VisualEvent) => {
      console.log(e.detail.dot);
    };

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

    const getLayerInstance = () => {
      // 可以获取散点图实例,调用散点图实例方法
      console.log(dotRef.value.dot);
    };

    return {
      center,
      zoom,
      control: {
        scale: {},
        zoom: {
          position: 'topRight',
        },
      },
      mapRef,
      dotRef,
      dotData,
      styles: {
        type: 'circle', // 圆形样式
        fillColor: '#1CD5FF', // 填充颜色
        radius: 5, // 原型半径
      },
      selectOptions: { // 拾取配置
        action: 'hover', // 拾取动作
        style: {
          type: 'circle', // 圆形样式
          fillColor: '#1CD5FF', // 填充颜色
          radius: 5, // 原型半径
        },
        enableHighlight: false, // 是否使用高亮效果
      },
      onClick,
      onMapInited,
      getLayerInstance,
    };
  },
});

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

props

名称类型说明
dataTMap.visualization.DotPoint[]散点数据,DotPoint类型参考官网文档
stylesObject散点图样式集合,key-value形式。key对应数据中的styleId,value为样式对象,需符合 CircleDotStyle 或 ImageDotStyle 对象规范,参考官网文档
selectOptionsTMap.visualization.VisualSelectOptions拾取配置,可设置拾取动作、选中样式、是否使用高亮效果,其中选中样式需符合CircleDotStyle或ImageDotStyle对象规范,参考官网文档
enableBloomBoolean散点图呈现泛光效果,默认为false,参考官网文档
optionsTMap.visualization.DotOptions除了上述属性的其他配置参数,参考TMap.visualization.DotOptions

TMap.visualization.DotOptions

属性名称类型说明
faceToString散点固定的朝向,可取map(贴地)或screen(直立),默认为screen。
selectOptionsVisualSelectOptions拾取配置,可设置拾取动作、选中样式、是否使用高亮效果,其中选中样式需符合CircleDotStyle或ImageDotStyle对象规范。
animationRadiatedAnimationOptions | BeatingAnimationOptions散点动画参数 (1.1.0及以上版本即将下线,请使用processAnimation设置动画属性)。
enableBloomBoolean散点图呈现泛光效果,默认为false。
toggleAnimationAnimationOptions开关动画配置参数,不配置则无开关动画效果,支持animationType为‘fade’淡入淡出一种类型,默认为‘fade’淡入淡出
processAnimationDotAnimationOptions过程动画配置参数,不配置则无过程动画
zIndexNumber图层绘制顺序。
minZoomNumber图层最小缩放层级,当地图缩放层级小于该值时该图层不显示,默认为3。
maxZoomNumber图层最大缩放层级,当地图缩放层级大于该值时该图层不显示,默认为20。

事件

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

组件实例属性

名称类型说明
dotTMap.visualization.Dot散点图图层实例。实例方法参考TMap.visualization.Dot方法

TMap.visualization.Dot方法

方法返回值说明
setStyles(styles: Object)this设置样式集合,styles为key-value形式。key对应数据中的styleId,value为样式对象,需符合DotCircleStyle或DotImageStyle对象规范。
setFaceTo(faceTo: String)this设置散点朝向,可取map(贴地)或screen(直立)。
setData(dataList:DotPoint[])this设置数据。
getData()DotPoint[]获取数据。
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)this更新指定类别动画参数,type支持'toggle','process'。
getAnimation(type:String)AnimationOptions获取指定类型的动画参数,type支持'toggle','process'。
getSelectOptions()VisualSelectOptions获取拾取配置。
setSelectOptions(selectOptions: VisualSelectOptions)this设置拾取配置。
show()this显示图层。
hide()this隐藏图层。
remove()this从地图中删除图层。
destroy()this销毁图层对象。