arcgis for js实现迁徙图组件化封装

一、组件化代码

/***
 * echarts图层通用工具
 * date:2022-01-28
 * author:zdh
 * @type {EchartsLayerUtil}
 */
import {EchartsLayer} from './EchartsLayer'

let EchartsLayerUtil = (function () {
  function EchartsLayerUtil (arcgis2d) {
    this.arcgis2d=arcgis2d
    this.transferLayer = null
  }
  EchartsLayerUtil.prototype.createTransferLayer = function (data,idField,labelField){
    let geoCoordMap = data.geoCoordMap;
    let convertData = function (data) {
      let res = [];
      for (let i = 0; i < data.length; i++) {
        let dataItem = data[i];
        let fromCoord = geoCoordMap[dataItem[0][idField]];
        let toCoord = geoCoordMap[dataItem[1][idField]];
        if (fromCoord && toCoord) {
          res.push({
            fromName: dataItem[0][idField],
            toName: dataItem[1][idField],
            coords: [fromCoord, toCoord],
            value: 3,
          });
        }
      }
      return res;
    }
    let series = [];
    data.resultData.forEach(function (item, i) {
      series.push(
        {
          coordinateSystem: 'arcgis',
          type: "effectScatter",
          symbolSize: 20,
          hoverAnimation: true,
          itemStyle: {
            color: "rgba(60,53,212,1)",
            borderColor: "rgba(60,53,212,0.4)",
            borderWidth: 10
          },
          data: [
            {
              value: geoCoordMap[item[0][0][idField]],
              itemStyle: {
                normal: {
                  color: '#df27ba'
                }
              }
            }
          ],
          label: {
            normal: {
              show: true,
              position: 'right', //显示位置
              offset: [5, 0], //偏移设置
              formatter: function (params) {
                //圆环显示文字
                return item[0][0][labelField];
              },
              fontWeight: 8,
              fontSize: 20,
            },
          }

        },
        {
          name: ' Top10',
          type: 'lines',
          coordinateSystem: 'arcgis',
          zlevel: 2,
          symbol: ['none','circle'],
          symbolSize: 10,
          effect: {
            show: true,
            period: 4, //箭头指向速度,值越小速度越快
            trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
            symbol: 'arrow', //箭头图标
            symbolSize: 15, //图标大小
          },
          lineStyle: {
            normal: {
              color:'#eee',
              width: 1, //尾迹线条宽度
              opacity: 1, //尾迹线条透明度
              curveness: 0.3, //尾迹线条曲直度
            },
          },
          data: convertData(item)
        }
      )
    })
    this.transferLayer = new EchartsLayer()
    this.transferLayer.view=this.arcgis2d.mapView
    let option = {
      // title: {
      //     text: 'ArcGIS API for Javascript4.10扩展Echarts4之模拟迁徙',
      //     subtext: 'Data from Echart社区,Develop By YANG',
      //     left: 'center',
      //     textStyle: {
      //         color: '#fff'
      //     }
      // },
      series: series,
    };
    if (this.transferLayer.domDiv == null) {
      let divdom = document.createElement("div")
      this.transferLayer.init(this.arcgis2d.mapView,option,divdom)
    }
    else {
      this.transferLayer.chart.clear()
      if(option.series.length == 0){
        this.transferLayer.setVisible(false)
        return
      }else {
        this.transferLayer.setChartOption(option)
      }
    }
    this.transferLayer.chart.resize()
    this.transferLayer.box.hidden = false
  }
  return EchartsLayerUtil
}())
export {EchartsLayerUtil}

二、调用

 

三、展示效果

 如果对您有帮助

 感谢支持技术分享,请扫码点赞支持:

技术合作交流qq:2401315930

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

合抱阴阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值