当前位置: 首页 > article >正文

vue使用高德地图实现轨迹显隐

<template>
  <div>
    <el-button type="primary" @click="pathShowOrHide">
      轨迹显/隐
    </el-button>

    <div id="container" />
  </div>
</template>

<script>
import AMapLoader from '@amap/amap-jsapi-loader'

export default {
  name: 'MapView',

  data() {
    return {
      map: null,
      PathSimplifier: null,
      $: null,
      pathState: true
    }
  },

  mounted() {
    this.initAMap()
  },

  unmounted() {
    this.map?.destroy()
  },

  methods: {

    initPage(PathSimplifier, $) {
      const pathSimplifierIns = new PathSimplifier({
        zIndex: 100,
        // autoSetFitView:false,
        map: this.map, // 所属的地图实例

        getPath: function(pathData, pathIndex) {
          return pathData.path
        },

        getHoverTitle: function(pathData, pathIndex, pointIndex) {
          return null
        }
      })

      window.pathSimplifierIns = pathSimplifierIns

      pathSimplifierIns.setData([{
        name: '测试',
        path: [
          [116.405289, 39.904987],
          [113.964458, 40.54664],
          [111.47836, 41.135964],
          [108.949297, 41.670904]
        ]
      }])

      const pathNavigatorStyles = [{
        width: 16,
        height: 24,
        content: 'defaultPathNavigator'
      }
      ]

      function extend(dst) {
        if (!dst) {
          dst = {}
        }

        const slist = Array.prototype.slice.call(arguments, 1)

        for (let i = 0, len = slist.length; i < len; i++) {
          const source = slist[i]

          if (!source) {
            continue
          }

          for (const prop in source) {
            if (source.hasOwnProperty(prop)) {
              dst[prop] = source[prop]
            }
          }
        }
        return dst
      }

      let idx = 0

      const navg1 = pathSimplifierIns.createPathNavigator(0, {
        loop: true,
        speed: 1000000,
        pathNavigatorStyle: extend({}, pathNavigatorStyles[0])
      })

      navg1.start()

      function changeNavgContent() {
        // 获取到pathNavigatorStyle的引用
        const pathNavigatorStyle = navg1.getStyleOptions()

        // 覆盖修改
        extend(pathNavigatorStyle, pathNavigatorStyles[(++idx) % pathNavigatorStyles.length])

        // 重新绘制
        pathSimplifierIns.renderLater()
      }

      setInterval(changeNavgContent, 500)
    },

    initAMap() {
      const that = this
      AMapLoader.load({
        key: 'ed030cd90d1a6014ea01f26d51250f40', // 申请好的Web端开发者Key,首次调用 load 时必填
        version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ['AMap.Scale'], // 需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
        AMapUI: {
          version: '1.1',
          plugins: ['overlay/SimpleMarker']
        }// 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map('container', {
            // 设置地图容器id
            viewMode: '3D', // 是否为3D地图模式
            zoom: 4, // 初始化地图级别
            center: [116.397428, 39.90923] // 初始化地图中心点位置
          })
          AMapUI.load(['ui/misc/PathSimplifier', 'lib/$'], (PathSimplifier, $) => {
            if (!PathSimplifier.supportCanvas) {
              alert('当前环境不支持 Canvas!')
              return
            }
            this.PathSimplifier = PathSimplifier
            this.$ = $
            this.initPage(PathSimplifier, $)
          })
        })
        .catch((e) => {
          console.log(e)
        })
    },

    pathShowOrHide() {
      if (this.pathState) {
        window.pathSimplifierIns.setData([])
        this.pathState = false
      } else {
        this.initPage(this.PathSimplifier, this.$)
        this.pathState = true
      }
    }
  }
}
</script>

<style scoped>
#container {
  width: 100%;
  height: 300px;
}
</style>

http://www.kler.cn/a/370457.html

相关文章:

  • Golang Gin系列-1:Gin 框架总体概述
  • 大模型GUI系列论文阅读 DAY1:《基于大型语言模型的图形用户界面智能体:综述》
  • git操作
  • 使用傅里叶变换进行图像边缘检测
  • 智能学习平台系统设计与实现(代码+数据库+LW)
  • Vue前端框架概述
  • 第6次CCF CSP认证真题解
  • CSS.导入方式
  • 字符串及正则表达式
  • vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发
  • 已经安装好Ubuntu,10分钟配好Anaconda3
  • Tomcat作为web的优缺点
  • 【前端基础】如何判断鼠标选中文本的方向
  • linux tracepoint
  • x3daudio17dll丢失是什么原因?如何重新安装
  • Centos7.9编译安装Python3.12
  • 如何在Linux下安装和配置Docker
  • 七,Linux基础环境搭建(CentOS7)- 安装Scala和Spark
  • Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程
  • 计算机网络关键名词中英对照
  • WebGIS开发之编辑功能(分割、融合、捕捉、追踪)
  • 【QT】HTTP服务器
  • 数据挖掘:电商会员价值分析模型方案
  • txt数据转为pdf格式并使用base64解密输出
  • 【MATLAB源码-第194期】基于matlab的MB-OFDM仿真,超宽带(UWB)无线传输。对比LS/DFT及其改进算法。
  • Cmake Error:could not find any instance of Visual Studio.