Skip to content

弧线图

地图弧线图组件,弧线图用以展示两点之间的关联,可以用在迁徙图等表示流向的场景中。

基础示例

vue
<template>
  <tlbs-map
    ref="mapRef"
    api-key="OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"
    :center="center"
    :zoom="zoom"
    :control="control"
    :options="{
      mapStyleId: 'style4',
      pitch: 46.9,
      rotation: 13.6,
      renderOptions: {
        enableBloom: true, // 泛光
      },
    }"
    @map_inited="onMapInited"
  >
    <tlbs-arc
      ref="arcRef"
      :data="arcData"
      :pick-style="pickStyle"
      :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';

interface ArcData extends TMap.visualization.ArcLine {
  count: number;
}

export default defineComponent({
  name: 'ArcDemo',
  setup() {
    const mapRef = ref(null);
    const arcRef = ref(null);
    const center = ref({ lat: 37.80787, lng: 112.269029 });
    const zoom = ref(5);
    const arcData = ref([]);

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

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

    const getLayerInstance = () => {
      // 可以获取弧线图实例,调用弧线图实例方法
      console.log(arcRef.value.arc);
    };

    return {
      center,
      zoom,
      control: {
        scale: {},
        zoom: {
          position: 'topRight',
        },
      },
      mapRef,
      arcRef,
      onMapInited,
      getLayerInstance,
      // @ts-ignore
      arcData,
      options: {
        zIndex: 1,
      },
      pickStyle: (item: ArcData) => {
        let style;
        if (item.count < 7000) {
          style = {
            width: 3,
            color: 'rgba(230,129,28,0.1)',
            animateColor: '#FFCA1F',
          };
        } else {
          style = {
            width: 3,
            color: 'rgba(1,124,247,0.1)',
            animateColor: '#1DFAF2',
          };
        }
        return style;
      },
    };
  },
});

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

props

名称类型说明
dataTMap.visualization.ArcLine[]弧线数据,ArcLine类型参考官网文档
pickerStyleFunction样式映射函数,接收ArcLine数据返回对应样式,样式对象规范详见 TMap.visualization.ArcStyle,参考官网文档
modeString弧线模式,horizontal 代表贴地的弧线,vertical 代表弧线所在平面会垂直于底图平面,默认为vertical。
optionsTMap.visualization.ArcOptions轨迹图配置参数,参考TMap.visualization.ArcOptions类型

TMap.visualization.ArcOptions类型

轨迹图配置参数。

名称类型说明
pickStyleFunction轨迹图样式映射函数,接收ArcLine数据返回对应样式,样式对象规范详见 ArcStyle
animatableBoolean是否开启动画,默认为true(即将下线,请使用processAnimation设置enable属性)。
opacityNumber弧线透明度,取值范围(0, 1],默认0.5,(即将下线,请在ArcStyle中使用rgba格式设置透明度)。
widthNumber弧线的宽度,默认为1,单位是屏幕像素,(即将下线,请在ArcStyle定义弧线宽度)。
curvatureNumber弧线曲度,取值范围(0, 1],默认为0.6。
selectOptionsVisualSelectOptions拾取配置,可设置拾取动作、选中样式、是否使用高亮效果,其中选中样式需符合ArcStyle对象规范。
enableBloomBoolean弧线图呈现泛光效果,默认为false。
enableGeodesicBoolean弧线是否开启大地曲线绘制模式,当线段起始端点经度跨度大于180度时,开启后则两端点连线会跨越180度经线进行连线,不开启则跨越0度经线进行连线,默认为false
toggleAnimationAnimationOptions开关动画配置参数,不配置则无开关动画效果。支持animationType为‘fade’淡入淡出,‘grow’生长两种类型,默认animationType为‘fade’淡入淡出。
processAnimationArcAnimationOptions过程动画配置参数,不配置则启用默认流动动画。
zIndexNumber图层绘制顺序。
minZoomNumber图层最小缩放层级,当地图缩放层级小于该值时该图层不显示,默认为3。
maxZoomNumber图层最大缩放层级,当地图缩放层级大于该值时该图层不显示,默认为20。

ArcAnimationOptions

弧线图过程动画规范。

属性名称类型说明
enableBoolean是否启用,默认为true。
tailFactorNumber尾迹比例,取值范围0~1,默认为0.3。
animationTypeString动画类型名称,支持‘flow’流动一种动画类型,默认为‘flow’流动。
durationNumber动画时长,单位毫秒,默认3000。
yoyoBoolean是否回弹,默认false。
repeatNumber动画执行次数,默认为Infinity,不支持设置为其他值。

事件

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

组件实例属性

名称类型说明
arcTMap.visualization.Arc弧线图层实例。实例方法弧线图层实例TMap.visualization.Arc

弧线图层实例TMap.visualization.Arc

方法返回值说明
setData(dataList:ArcLine[])this设置数据。
getData()ArcLine[]获取数据。
setZIndex(zIndex:Number)this设置图层绘制顺序。
getZIndex()Number获取图层绘制顺序。
setMinZoom(minZoom: Number)this设置图层最小缩放层级,当地图缩放层级小于该值时该图层不显示。
getMinZoom()Number获取图层最小缩放层级。
setMaxZoom(maxZoom: Number)this设置图层最大缩放层级,当地图缩放层级大于该值时该图层不显示。
getMaxZoom()Number获取图层最大缩放层级。
setPickStyle(pickStyle: Function)this设置弧线图样式映射函数。
getPickStyle()Function获取弧线图样式映射函数。
setCurvature(curvature: Number)this设置弧线的曲度。
getCurvature()Number获取弧线的曲度。
setMode(mode: String)this设置弧线的模式,是贴地的弧线或垂直的弧线。
getMode()String获取弧线的模式。
setAnimDuration(duration: Number)this设置动画时间,从起点到终点的运动时间(即将下线,请使用updateAnimation设置duration属性进行动画时间设置)。
getAnimDuration()Number获取动画时间,从起点到终点的运动时间(即将下线,请使用getAnimation获取duration属性)。
setHighlightDuration(HighlightTime: Number)this设置动画的高亮时间,影响弧线上高亮的长度(即将下线,请使用updateAnimation设置tailFactor属性进行动画尾迹时间设置)。
getHighlightDuration()Number获取高亮时间(即将下线,请使用getAnimation获取tailFactor属性)。
addTo(map:Map)this添加至指定地图实例。
updateAnimation(type:String, animationOptions: AnimationOptions)this更新指定类型的动画参数,type支持‘process’,‘toggle’。
getAnimation(type:String)AnimationOptions获取指定类型的动画参数,type支持‘process’,‘toggle’。
getSelectOptions()VisualSelectOptions获取拾取配置。
setSelectOptions(selectOptions: VisualSelectOptions)this设置拾取配置。
getMidPositions()LatLng[]获取图层所有弧线的中点坐标,不支持在大地曲线绘制模式下使用。
show()this显示图层。
hide()this隐藏图层。
remove()this删除图层。
destroy()this销毁图层对象。